UNIXのcutコマンドは、ファイルの各行からセクションを切り取り、結果を標準出力に書き込むためのコマンドです。これは、バイト位置、文字、およびフィールドによって行の一部を切り取るために使用できます。基本的に、cutコマンドは行をスライスし、テキストを抽出します。コマンドでオプションを指定する必要があります。指定しないとエラーになります。複数のファイル名が指定されている場合、各ファイルのデータの前にファイル名はありません。
構文:
cut OPTION... ...
state.txtという名前の2つのファイルと、capital.txtにインドの州の5つの名前が含まれているとしましょう。それぞれ大文字。
$ cat state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
オプションを指定しないと、エラーが表示されます。
$ cut state.txtcut: you must specify a list of bytes, characters, or fieldsTry "cut --help" for more information.
オプションおよびその説明と例:
1。 -b(byte):特定のバイトを抽出するには、-bオプションの後に、バイト番号のリストをコンマで区切って続ける必要があります。バイト範囲は、ハイフン(-)を使用して指定することもできます。バイト番号のリストを指定する必要があります。指定しないとエラーになります。タブとバックスペースは1バイトの文字のように扱われます。
行の先頭から末尾までのバイトを選択するために特別な形式を使用します:
In this, 1- indicate from 1st byte to end byte of a line$ cut -b 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhIn this, -3 indicate from 1st byte to 3rd byte of a line$ cut -b -3 state.txtAndAruAssBihChh
2。 -c(列):文字で切り取るには、-cオプションを使用します。これにより、-cオプションに指定された文字が選択されます。これは、コンマで区切られた数値のリスト、またはハイフン(-)で区切られた数値の範囲にすることができます。タブとバックスペースは文字として扱われます。文字番号のリストを指定する必要があります。そうしないと、このオプションでエラーが発生します。
構文:
$cut -c filename
ここで、kは文字の開始位置とnは、kとnが「-」で区切られている場合は各行の文字の終了位置を示します。それ以外の場合は、入力として取得されたファイルの各行の文字の位置のみです。
$ cut -c 2,5,7 state.txtnrrahsmirhti
Above cutコマンドは、ファイルの各行から2番目、5番目、7番目の文字を出力します。
$ cut -c 1-7 state.txtAndhraArunachAssamBiharChhatti
Above cutコマンドは、ファイルから各行の最初の7文字を出力します。
Cutは、行の最初から最後まで文字を選択するために特別な形式を使用します。
$ cut -c 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhAbove command prints starting from first character to end. Here in command only startingposition is specified and the ending position is omitted.$ cut -c -5 state.txtAndhrArunaAssamBiharChhatAbove command prints starting position to the fifth character. Here the starting positionis omitted and the ending position is specified.
3. -f(フィールド):-cオプションは、固定長の行に役立ちます。ほとんどのunixファイルには固定長がありません-長さの行。有用な情報を抽出するには、列ではなくフィールドで切り取る必要があります。フィールド番号のリストfiedはコンマで区切る必要があります。範囲は-fオプションでは記述されません。 cutは、デフォルトのフィールド区切り文字としてタブを使用しますが、-dオプションを使用して他の区切り文字と連携することもできます。
注:UNIXではスペースは区切り文字とは見なされません。
構文:
$cut -d "delimiter" -f (field number) file.txt
ファイルのように、state.txtフィールドはスペースで区切られます。-dオプションを使用しない場合は、行全体が出力されます。
$ cut -f 1 state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
-dオプションを使用すると、スペースがフィールドの区切り文字または区切り文字と見なされます。
$ cut -d " " -f 1 state.txtAndhraArunachalAssamBiharChhattisgarh
Command prints field from first to fourth of each line from the file.Command:$ cut -d " " -f 1-4 state.txtOutput:Andhra PradeshArunachal PradeshAssamBiharChhattisgarh
4。 –complement:名前が示すように、出力を補完します。このオプションは、-fまたは-cを使用して他のオプションと組み合わせて使用できます。
5。 –output-delimiter:デフォルトでは、出力区切り文字は、-dオプションを使用してカットで指定する入力区切り文字と同じです。出力区切り文字を変更するには、オプション–output-delimiter =” delimiter”を使用します。
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Andhra%PradeshArunachal%PradeshAssamBiharChhattisgarh
ここで、cutコマンドは、標準出力のdelimiter(%)を変更します。 -fオプションを使用して指定されたフィールド。
6。 –version:このオプションは、システムで現在実行されているカットのバージョンを表示するために使用されます。
$ cut --versioncut (GNU coreutils) 8.26Packaged by Cygwin (8.26-2)Copyright (C) 2016 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later .This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Written by David M. Ihnat, David MacKenzie, and Jim Meyering.
cutコマンドのアプリケーション
1。パイプでテールを使用する方法(|):cutコマンドは、UNIXの他の多くのコマンドと一緒にパイプできます。次の例では、catコマンドの出力は、ファイルstate.txtからの状態名を逆の順序で並べ替えるために-fオプションを指定してcutコマンドへの入力として与えられています。
$ cat state.txt | cut -d " " -f 1 | sort -rChhattisgarhBiharAssamArunachalAndhra
追加の処理のために、1つ以上のフィルターとパイプすることもできます。次の例のように、cat、head、cutコマンドを使用しており、その出力はdirective(>)を使用してファイル名list.txtに保存されます。
$ cat state.txt | head -n 3 | cut -d " " -f 1 > list.txt$ cat list.txtAndhraArunachalAssam
他の例を提供してくれたSaloniGuptaに感謝します。