Linuxコマンド:フィルタテクニック(cut)

テキストデータの各行から、指定したフィールドを取り出すことができるのが「cut」コマンドです。ここではcutコマンドを使った基本的なフィルタ方法について紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

書式とオプション

書式

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

主なオプション

オプション 説明
-b  各行から取り出す位置をバイトで指定します。
-c  各行から取り出す位置を文字数で指定します。
-d  区切り文字を指定します。
-f  各行から取り出すフィールド番号を指定します。

使用例

特定の位置の文字を取り出す

文字の位置を指定すると、特定位置の文字を取り出すことができます。

# 3文字目を取り出す
cut -c 3 sample.txt

# 1文字目と3文字目を取り出す
cut -c 1,3 sample.txt

# 2文字目から4文字目を取り出す
cut -c 2-4 sample.txt

# 3文字目以降を取り出す
cut -c 3- sample.txt

特定フィールドを取り出す

フィールド番号を指定すると、特定位置のフィールドを取り出すことができます。なお、デフォルトのフィールド区切り文字(デリミタ)は「タブ」です。

# 2フィールド目を取り出す
cut -f 2 sample.txt

# 2フィールド目と4フィールド目を取り出す
cut -f 2,4 sample.txt

# 3フィールド目から5フィールド目までを取り出す
cut -f 3-5 sample.txt

# 3フィールド目以降を取り出す
cut -f 3- sample.txt

区切り文字を指定して、特定フィールドを取り出す

フィールド間の区切り文字(デリミタ)と、取り出すフィールド番号を指定すると、指定したデリミタによって区切られた特定位置のフィールドを取り出すことができます。

# スペース区切りの2フィールド目を取り出す
cut -d ' ' -f 2 sample.txt

# セミコロン区切りの3フィールド目を取り出す
cut -d ':' -f 3 sample.txt

# カンマ区切りの5フィールド目を取り出す
cut -d ',' -f 5 sample.txt

まとめ

head、tail、cutなどのフィルタコマンドは、知っていると作業効率を格段に向上させることができます。Linuxの基本コマンドとして覚えておきたいたいところです。

スポンサーリンク