cutコマンドは、テキストファイルの各行から指定した部分を切り出すコマンドです。
cutコマンドの使い方
cutコマンドの書式は以下の通りです。
1 |
cut [オプション] [ファイル...] |
cutコマンドは指定したファイル、あるいは標準入力の指定した範囲を抽出します。
オプション
-b | バイト単位で抽出する範囲を指定する |
-c | 文字単位で抽出する範囲を指定する |
-d | フィールドの区切り文字を指定する(デフォルトはタブ) |
-f | 指定したフィールドの範囲を抽出する |
指定範囲は以下のように指定します。
N | N番目を切り出す |
N- | N番目から行末までを切り出す |
N-M | N番目からM番目までを切り出す |
-N | 行頭からN番目までを切り出す |
N1, N2, ... | N1番目, N2番目, ... を切り出す |
指定した範囲を切り出す
以下の例では、文字数単位で範囲を指定し、文字を切り出しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 6文字目を切り出す $ echo "1234567890" | cut -c6 6 # 6文字目から行末までを切り出す $ echo "1234567890" | cut -c6- 67890 # 先頭から6文字目までを切り出す $ echo "1234567890" | cut -c-6 123456 # 1文字目と4文字目と7文字目を切り出す $ echo "1234567890" | cut -c1,4,7 147 |
複数範囲を指定した場合は、カンマで指定した順番は考慮されないので注意してください。
ファイルから指定した範囲を取り出す
今回は以下のようなCSVファイルから指定した範囲を切り出します。
1 2 3 4 5 6 |
$ cat sample.csv 1,aaa,111,001,011 2,bbb,222,002,012 3,ccc,333,003,013 4,ddd,444,004,014 5,eee,555,005,015 |
CSVファイル(カンマ区切り)の場合は、「-d」オプションを指定し「-d,」のようにすれば、フィールド単位で切り出したときカンマが区切り文字として扱われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# 2番目のフィールドを切り出す $ cut -f2 -d, sample.csv aaa bbb ccc ddd eee # 4番目のフィールドから行末まで切り出す $ cut -f4- -d, sample.csv 001,011 002,012 003,013 004,014 005,015 # 先頭から2番目のフィールドまで切り出す $ cut -f-2 -d, sample.csv 1,aaa 2,bbb 3,ccc 4,ddd 5,eee # 1番目と3番目と4番目のフィールドを切り出す $ cut -f1,3,4 -d, sample.csv 1,111,001 2,222,002 3,333,003 4,444,004 5,555,005 |
cutコマンドは、CSVファイルのようなデータの一部を切り出すときに非常に便利です。