【cut】Linuxでファイルの各行から指定した部分を切り出すコマンド

cutコマンドは、テキストファイルの各行から指定した部分を切り出すコマンドです。

cutコマンドの使い方

cutコマンドの書式は以下の通りです。

cut [オプション] [ファイル...]

cutコマンドは指定したファイル、あるいは標準入力の指定した範囲を抽出します。

オプション

-b バイト単位で抽出する範囲を指定する
-c 文字単位で抽出する範囲を指定する
-d フィールドの区切り文字を指定する(デフォルトはタブ)
-f 指定したフィールドの範囲を抽出する

指定範囲は以下のように指定します。

N N番目を切り出す
N- N番目から行末までを切り出す
N-M N番目からM番目までを切り出す
-N 行頭からN番目までを切り出す
N1, N2, ... N1番目, N2番目, ... を切り出す

指定した範囲を切り出す

以下の例では、文字数単位で範囲を指定し、文字を切り出しています。

# 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ファイルから指定した範囲を切り出します。

$ 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,」のようにすれば、フィールド単位で切り出したときカンマが区切り文字として扱われます。

# 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ファイルのようなデータの一部を切り出すときに非常に便利です。


イベント