cut
テキストを切り出す(パイプ)
各行から「n 文字目から m 文字目」「n 番目から m 番目からのカラム」というようなルールで文字列を切り出す。
●バイト数で指定
-b[num1]-[num2] num1 バイト目からnum2 バイト目までを切り出す
% cut -b30 < file.txt
⇒ file.txt の30バイト目を切り出す
% cut -b20-30 < file.txt
⇒ file.txt の20バイト目から30バイト目までを切り出す
% cut -b-30 < file.txt
⇒ file.txt の行頭から30バイト目までを切り出す
% cut -b20- < file.txt
⇒ file.txt の20バイト目以降を切り出す
●文字数で指定
-c[num1]-[num2] num1 文字目からnum2 文字目までを切り出す
バイト単位で切り出す -b オプションと同様の動作をするが、正しくロケールを認識する Solaris などでは日本語としての文字数を指定できる。
% cat file-euc.txt
あいうえお
% env LC_ALL=ja_JP.eucJP cut -c3-4 < file-euc.txt
うえ
⇒ 日本語として解釈し、3〜4文字目を切り出す
% cut -b3-4 < file-euc.txt
い
⇒ バイト単位だと 3〜4バイト目として扱われる
●フィールド数で指定
-f フィールド番号 指定したフィールドを出力する。デフォルトのフィールド区切りは TAB である。
% cat file.txt
abc(TAB)def(TAB)ghi(TAB)(TAB)jkl
% cut -f 1 < file.txt
abc
⇒ 1番目のフィールドを表示
% cut -f 2,3 < file.txt
abc def
⇒ 2番目と 3番目のフィールドを表示
% cut -f 2- < file.txt
def ghi jkl
⇒ 2番目以降のフィールドを表示
-d str フィールドを区切る文字として文字列 str を使用する。
-d オプションを使う場合は -f オプションを同時に指定しないと意味がない。
% cat file.txt
abc,def,ghi,,jkl
% cut -d , -f 2,3 < file.txt
def,ghi
⇒ カンマ区切りとみなして 2番目と 3番目のフィールドを表示
>> コマンド
head * tail * awk * sed *