Linux Tips

テキストファイルから指定したフィールドを取り出すには

北浦訓行
2002/9/19

 住所録のテキストデータから電話番号だけを抜き出したり、ログファイルから特定のデータだけを表示するなどのように、テキストファイルから指定したフィールドのデータを取り出すことは意外と多い。そのようなときは、cutコマンドを使用すると便利だ。

 cutコマンドは、テキストファイルから指定したフィールドを表示するプログラムだ。リダイレクトで結果をファイルにすることもできる。cutコマンドの主なオプションは以下のとおり。

オプション
意味
-b BYTE-LIST BYTE-LISTで指定した位置の各byteだけを表示する。タブやバックスペースも1byteとして扱う
-c CHARACTER-LIST CHARACTER-LISTで指定した位置の各文字だけを表示する。このオプションは-bと同じだが、国際化によって動作が異なることになる。タブやバックスペースも1文字として扱う
-f FIELD-LIST FIELD-LISTで指定したフィールドだけを表示する。デフォルトのフィールドの区切りはタブ
-d DELIM フィールドの区切り文字としてDELIMで指定した先頭の文字を使う。デフォルトはタブ

 例えば、以下のようにランダムな9文字の文節がタブで区切られているファイルの11文字以降を表示するには、-c 11-というオプションを付けてcutコマンドを実行すればいい。また、11文字目から15文字目の文字というように範囲で指定することもできる。

$ cat tmp.dat
bHk3Oe4xd       1btYixu2Z       mwLzi08Of
dEyxe9Ww6       3va7xUovI       p6TvesxK0
huuA85Eqv       Q3soku5Qa       sHq2Bt2ma
$ cut -c 11- tmp.dat ←tmp.datの11文字目以降を表示
1btYixu2Z       mwLzi08Of
3va7xUovI       p6TvesxK0
Q3soku5Qa       sHq2Bt2ma
$ cut -c 11-15 ←tmp.datの11文字目から15文字目までを表示
1btYi
3va7x
Q3sok

 また、区切り文字をカンマに変更して、フィールド単位で取り出すこともできる。

$ cat add.csv
"北浦 訓行","000-0000","東京都二十三区","緑6-12-54","緑コーポ10","03-0000-0000"
"佐藤 甘","000-0000","東京都東京市","緑多1-1-1","","000-xxxx-xxxx"
"海野 塩","000-0000","千葉県海岸市","海横1000","","0000-yy-yyyy"
$ cut -f 1 -d , add.csv ←区切り文字をカンマにして、最初のフィールドを表示
"北浦 訓行"
"佐藤 甘"
"海野 塩"
$ cut -f 3-5 -d , add.csv ←区切り文字をカンマにして、3番目から5番目までのフィールドを表示
"東京都二十三区","緑6-12-54","緑コーポ10"
"東京都東京市","緑多1-1-1",""
"千葉県海岸市","海横1000",""

Linux Tips Index



 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間