Linuxコマンド辞典 cutコマンド(テキスト処理)

ファイルの各行から指定したフィールド(列)を抜き出す「cut」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

指定したテキストファイルの各行から区切り文字(デリミタ)で区切られた任意のフィールドを出力します。ファイルを指定しない場合や、ファイルを指定する代わりに「-」を指定した場合は、標準入力を読み込みます。

バイト(-bオプション)/文字数(-cオプション)/フィールド(-fオプション)で切り出す範囲を数値で指定します。N番目を指定する場合は「N」、M番目~N番目を指定する場合は「M-N」、行頭~M番目を指定する場合は「-M」、M番目~行末を指定する場合は「M-」となります。

書式

$ cut [オプション] [ファイル名・・・]

オプション

-b 範囲
–bytes=範囲
範囲に指定したバイト数だけ表示する。タブとバックスペースは1バイトとして扱う
-c 範囲
–characters=範囲
範囲に指定した文字数だけ表示する
-f 範囲
–fields=範囲
範囲に指定したフィールド数だけ表示する(デフォルトはフィールドがタブで区切られている)
-d 区切り文字
delimiter=区切り文字
-fオプションを利用するときの区切り文字を指定する(デフォルトはタブを区切り文字と判断する)
-s
–only-delimited
–output-delimiter=文字
フィールドの区切りがない行を無視する

ファイルの一部(フィールド)を指定して表示

抜き出すフィールド位置を指定して抜き出します。特定のフィールドを抜き出すためには、「-f」オプションを使用します。

$ cut -d "区切り" -f 抜き出すフィールド ファイル名

実行結果

/etc/passwdファイルの区切り:(コロン)で分割して7番目のフィールドを抜き出しています。

[sunarin@localhost work]$ head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[sunarin@localhost work]$ cut -d ":" -f 7 /etc/passwd
/bin/bash
/sbin/nologin
・
・
・
/bin/bash
[sunarin@localhost work]$ 

ファイルのフィールド(列)範囲指定して表示

抜き出すフィールドの範囲を指定して抜き出します。特定のフィールドを抜き出すためには、「-f」オプションを使用します。

$ cut -d "区切り" -f 開始フィールド - 終了フィールド ファイル名

実行結果

/etc/passwdファイルの区切り:(コロン)で分割して5番目から7番目のフィールドを抜き出しています。

[sunarin@localhost work]$ cut -d ":" -f 5-7 /etc/passwd
root:/root:/bin/bash
bin:/bin:/sbin/nologin
・
・
・
sunarin:/home/sunarin:/bin/bash
[sunarin@localhost work]$ 

ファイルの複数のフィールド(列)指定して表示

抜き出すフィールドを複数指定して抜き出します。特定のフィールドを抜き出すためには、「-f」オプションを使用します。また、抜き出したいフィールドを,(カンマ)で区切ります。

$ cut -d "区切り" -f フィールド1,フィールド2,・・ ファイル名

実行結果

/etc/passwdファイルの区切り:(コロン)で分割して1番目、5番目、7番目のフィールドを抜き出しています。

[sunarin@localhost work]$ cut -d ":" -f 1,5,7 /etc/passwd
root:root:/bin/bash
bin:bin:/sbin/nologin
・
・
・
[sunarin@localhost work]$ 

ファイルのフィールド(列)を開始位置から行末表示

抜き出すフィールドを開始位置から行末まで抜き出します。特定のフィールドを抜き出すためには、「-f」オプションを使用します。

$ cut -d "区切り" -f 開始フィールド- ファイル名

実行結果

/etc/passwdファイルの区切り:(コロン)で分割して3番目から行末までのフィールドを抜き出しています。

[sunarin@localhost work]$ cut -d ":" -f 3- /etc/passwd
0:0:root:/root:/bin/bash
1:1:bin:/bin:/sbin/nologin
・
・
・
[sunarin@localhost work]$