cutコマンド(各行の選択範囲を標準出力に表示する)
形式
cut -b リスト[-n][--output-delimiter=文字列][パス名 ...] cut -c リスト[--output-delimiter=文字列][パス名 ...] cut -f リスト[-s][-d デリミタ][--output-delimiter=文字列][パス名 ...]
機能
各行の選択範囲を標準出力に表示します。それぞれのファイルまたはデフォルトの標準入力から,各行のリストに指定された部分を選択して標準出力に出力します。
引数
-bオプション,-cオプション,-fオプションのどれも指定しない場合は,usageを出力して終了します。
- --bytes=リスト
-
動作を指定するオプションです。バイト位置で範囲指定します。リストには1から始まるバイト位置を指定します。複数回指定でき,指定した部分をすべてつなげて出力します。
--output-delimiterオプションを同時に指定すると,--output-delimiterオプションに指定した文字列でつなげて出力します。
- --characters=リスト
-
動作を指定するオプションです。文字位置で範囲指定します。リストには1から始まる文字位置を指定します。複数回指定でき,指定した部分をすべてつなげて出力します。
--output-delimiterオプションを同時に指定すると,--output-delimiterオプションに指定した文字列でつなげて出力します。
- --fields=リスト
-
動作を指定するオプションです。フィールド位置で範囲指定します。リストには区切り文字で区切られた1から始まるフィールド位置を指定します。複数回指定でき,指定した部分およびデリミタをすべてつなげて出力します。
選択されたフィールドは区切り文字で区切って表示します。区切り文字が存在しない行は,行全体を出力します。ただし,-sオプションを指定すると区切り文字が存在しない行は出力しません。
また,--output-delimiterオプションを指定することで,選択されたフィールドと共に出力する区切り文字を変更できます。
- リスト
-
カラム位置または区切り文字で区切られたフィールド位置を指定できます。カラム位置は,1から始まります。
選択範囲をコンマ,スペースまたはタブで区切ると,複数の選択範囲が指定できます。スペースまたはタブで区切る場合は,"(ダブルクォーテーション)で囲む必要があります。1個の選択範囲はn,x-,-y,x-yのどれかを指定します。存在しない位置を指定してもエラーにはなりません。n,x,yはフィールドまたはカラム位置です。
-
n:その位置だけを示します。
-
x-:xの位置から最後までを示します。
-
-y:先頭位置からyの位置までを示します。
-
x-y:位置xから位置yを示します。x<yとなる必要があります。x>yの場合,エラーメッセージが出力されます(cut: [-bcf] list: illegal list value)。
-
- -n
-
マルチバイトを分割しません。-nを指定しない場合は,マルチバイト文字の途中でも分割します。
- パス名
-
入力するパス名を指定します。パス名を省略するかハイフン(-)を指定すると,標準入力から入力します。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
エラー終了 |
注意事項
-
cutコマンドはテキストファイルを対象としています。バイナリファイルからの入力やバイナリデータの出力は,動作を保証しません。
使用例
この使用例では,次の内容が記述された「test.txt」を基に,cutコマンドの実行結果を説明します。
123:5678:abcdef:hijkl field1:field2:field3:filed4 sssssssssssssssssssssss
cutコマンドを実行した結果表示に使用するファイルの形式を次に示します。
-
1バイト目と3から5バイト目を出力します。
$ cut -b 1,3-5 test.txt 13:5 feld ssss
-
1から4文字目までを出力します。
$ cut -c -4 test.txt 123: fiel ssss
-
1番目と4番目のフィールドを表示します。
$ cut -f 1,4 -d : test.txt 123:hijkl field1:filed4 sssssssssssssssssssssss
-
1バイト目と3〜5バイト目を出力し,フィールド間に@:/の文字列を追加します。
$ cut -b 1,3-5 --output-delimiter="@:/" test.txt 1@:/3:5 f@:/eld s@:/sss
-
1番目と4番目のフィールドを表示し,区切り文字を@:/の文字列に置き換えます。
$ cut -f 1,4 -d : --output-delimiter="@:/" test.txt 123@:/hijkl field1@:/field4 sssssssssssssssssssssss
-
オプションエラーのメッセージを表示します。
このメッセージは,コマンドを実行するプラットフォームによって異なる場合があります。Windowsの例を次に示します。
C:\TEMP>%ADSH_OSCMD_DIR%\cut -z cut: illegal option -- z usage: cut -b list [-n] [--output-delimiter=string] [file ...] cut -c list [--output-delimiter=string] [file ...] cut -f list [-s] [-d delim] [--output-delimiter=string] [file ...]