6.14. データの切り出し【cut】

$ cut[オプション」 ファイル

cut コマンドは、テキストファイルから指定した位置の文字、またはフィールドを切り出し、その結果を標準出力に書き出すコマンドです。

最初に、cut コマンドの代表的なオプションを示します。

表 6-10. cut コマンドのオプション

-c CHARACTER-LISTCHARACTER-LIST で指定した位置の文字だけを表示します。タブも1文字として扱われます。
-f FIELD-LISTFIELD-LIST で指定したフィールドだけを表示します。フィールドの区切り文字は、-d オプションで指定します。
-d DELIMDELIM で指定した文字をフィールドの区切り文字として使用します。デフォルトはタブです。

ここでは、以下の ls コマンドの出力結果をもとに、cut コマンドの使用例を示します。

$ ls -al
合計 76
drwx------    5 taro     taro         4096  2月 17日 15:49 ./
drwxr-xr-x    4 root     root         4096  2月 17日 15:49 ../
-rw-r--r--    1 taro     taro         3824  2月 17日 15:49 .Xdefaults
-rw-r--r--    1 taro     taro           24  2月 17日 15:49 .bash_logout
-rw-r--r--    1 taro     taro          247  2月 17日 15:49 .bash_profile
-rw-r--r--    1 taro     taro         1363  2月 17日 15:49 .bashrc

(省略)

-c オプションを指定して、10文字目までを表示します。

$ ls -al | cut -c -10
合計 76
drwx------
drwxr-xr-x
-rw-r--r--
-rw-r--r--
-rw-r--r--
-rw-r--r--

(省略)

58文字目以降を表示します。

$ ls -al | cut -c 58-

./
../
.Xdefaults
.bash_logout
.bash_profile
.bashrc

(省略)

2文字目から10文字目までと57文字目以降を表示します。

$ ls -al | cut -c 2-10,57-
計 76
rwx------ ./
rwxr-xr-x ../
rw-r--r-- .Xdefaults
rw-r--r-- .bash_logout
rw-r--r-- .bash_profile
rw-r--r-- .bashrc

(省略)

また、区切り文字を指定して、フィールド単位で取り出すことも可能です。以下の add.csv ファイルをもとに cut コマンドの使用例を示します。

$ cat add.csv
"山田 太郎","000-0000","東京都港区","緑0-0-0","緑ハウス101","03-0000-0000"
"鈴木 一郎","000-0000","東京都杉並区","青1-1-1","","03-1111-1111"
"田中 花子","000-0000","千葉県千葉市","海2-2","","04-2222-2222"

区切り文字にカンマを指定して、最初のフィールドを表示します。

$ cut -d , -f 1 add.cvs 
"山田 太郎"
"鈴木 一郎"
"田中 花子"

区切り文字にカンマを指定して、1番目と 6番目のフィールドを表示します。

$ cut -d , -f 1,6 add.cvs 
"山田 太郎","03-0000-0000"
"鈴木 一郎","03-1111-1111"
"田中 花子","04-2222-2222"