コマンド解説: 2010年6月アーカイブ

スペースとTABが混在しているテキストにおいて、普通にawkで区切ると、両方とも区切り文字として認識されます。しかし、「スペースかTABのどちらか」を区切り文字にしたい場合は、次のようにします。

【サンプルのテキスト】

sh-3.2$ cat hoge
1 2 3 4 5 6

ちょっとわかりにくいので、スペースをアンダーバーに置換してみます。
sh-3.2$ cat hoge | sed -e s/\ /_/g
1_2 3_4_5 6

つまり、テキストファイル「hoge」は、2列目と3列目、5列目と6列目の間がTABで区切られている状態です。


【TABを区切り文字にする】

sh-3.2$ cat hoge | awk 'BEGIN {FS="\t"}{print $2}'
3 4 5


【スペースを区切り文字にする】

sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $1,$2}'
1 2 3

sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $1"\t"$2}'
1 2 3

sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $2}'
2 3

かなり力ワザですがw
一旦スペースをアンダーバーに置換してから、アンダーバーを区切り文字にすることで解決。
もっとスマートなやり方があったら教えてください!><
カスタム検索

カレンダー



このアーカイブについて

このページには、2010年6月以降に書かれたブログ記事のうちコマンド解説カテゴリに属しているものが含まれています。

前のアーカイブはコマンド解説: 2010年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

コマンド解説: 2010年6月: 月別アーカイブ

Powered by Movable Type 4.01