テキストデータの各行から、指定したフィールドを取り出すことができるのが「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の基本コマンドとして覚えておきたいたいところです。