linux note
     linuxのコマンドがカテゴリ別の一覧で確認できます。



 

Linux Note(トップページ) > テキスト操作 > テキスト操作の基本 > cut コマンド







[Note] cut コマンド

cut コマンドはテキストファイルの各行から指定したフィールドを取り出して表示します。取り出し方は、文字数やバイト数で指定したり、区切り文字(デリミタ)を指定して、何番目のフィールドを取り出すかなどを任意に決めることができます。
単純に文字数で各行の5文字目のデータを取り出して表示させるには、

 $ cut -c 5 test.csv

のように、「-c」に続けて5を指定します。

また、カンマ区切りのCSVファイルから各行の第3フィールドの値を取得する場合などは、

 $ cut -d, -f 3 test.csv

のように、「-d」のすぐ後に区切り文字(デリミタ)を指定し「-f」とともにフィールド数を指定します。

ところが、CSVファイルは以下のようにヘッダーやフッターがついている場合があります。

 $ cat test.csv

 **this is test.csv**
 1,2,3,4,5
 1,2,3,4,5
 1,2,3,4,5
 5,4,3,2,1
 5,4,3,2,1
 ***end of file****

上記のようCSVファイルに対して、例えばカンマ区切りのデータ各行の第4フィールドを取り出したいという場合に、普通に

 $ cut -d, -f 4 test.csv

としてしまうと、結果は以下のように

 $ cut -d, -f 4 test.csv

 **this is test.csv**
 4
 4
 4
 2
 2
 ***end of file****

のように、ヘッダーやフッターの説明書きが一緒についてきてしまいます。これを防ぐには、以下のように「-s」オプションが有効です。

 $ cut -d, -f 4 -s test.csv

 4
 4
 4
 2
 2

「-s」オプションを用いることで、余計な行(デリミタを含まない行)を丸ごとカットすることができ、非常に便利なコマンドとなります。また、「-s」は「–only-delimited 」としても同じことですが、スペルの長い方を選ぶ方は、おそらくいないでしょう。

以下にcut コマンドの主なオプションをまとめておきます。


オプション
機能の説明
-c
指定した位置の文字だけ表示する
-b
指定した位置のバイトだけ表示する
-d
フィールドの区切り文字(デリミタ)を設定する。初期設定値はタブになっている。
-f
指定したフィールドだけ表示する
-s
フィールドの区切りのない行を無視する。




[ カテゴリ一覧 ]

 |  エディタ  |  システム管理  |  テキスト操作  |  ファイルシステム  |  ファイル操作  | 
 |  ファイル管理  |  ユーザーやグループの管理  |