Cutコマンドの「フィールド」は何で構成されていますか?

Cutコマンドの「フィールド」は何で構成されていますか?

たとえば、このcutコマンドは次のようにパラメーター-fを使用できます。man

このフィールドのみを選択してください。 -sオプションが指定されていない場合は、区切り文字を含まないすべての行も印刷します。

この場合、フィールドとは何ですか?

答え1

「フィールド」という用語はしばしば同じcutツールに関連付けられていますawk。データをインポートして特定の文字を使用して区切ると、フィールドはデータ列のように見えます。これを行うためによく使用される文字はですSpace

ただし、ほとんどのツールと同様に構成が可能です。たとえば、

  • awk = awk -F"," ...- カンマで区切られます(例,:)。
  • cut = cut -d"," ...- カンマで区切られます(例,:)。

はい

最初は、awk空間を自動的に分割する方法を示しています。

$ echo "The rain in Spain." | awk '{print $1" "$4}'
The Spain.

これはcutまた、空間で分割を実行する方法を示しています。

$ echo "The rain in Spain." | cut -d" " -f1,4
The Spain.

cutこれには、列1と4を返すために使用する列データのCSVのリストがあります。

$ echo "col1,col2,col3,co4" | cut -d"," -f1,4
col1,co4

awkもこれを行うことができます:

$ echo "col1,col2,col3,co4" | awk -F"," '{print $1","$4}'
col1,co4

Awkはまた、さまざまな区切り文字を処理するのにもう少し堪能です。との両方を処理する方法は次のとおりですTabsSpaces

$ echo -e "The\t rain\t\t in Spain." | awk '{print $1" "$4}'
The Spain.

カットのための-sスイッチはどうですか?

このスイッチの場合、スイッチで指定された区切り文字を含まない行はcut印刷しないように指示します。-d

はい

このファイルがあるとしましょう。

$ cat sample.txt 
This is a space string.
This is a space   and   tab string.
Thisstringcontainsneither.

メモ:上記の2番目の文字列にはスペースとタブがあります。

cutスイッチがある場合とない場合の文字列を処理すると、次のようになります-s

$ cut -d" " -f1-6 sample.txt 
This is a space string.
This is a space  
Thisstringcontainsneither.

$ cut -d" " -f1-6 -s sample.txt 
This is a space string.
This is a space  

-s2番目の例では、スイッチが区切り文字を含まない出力から文字列を省略していることがわかりますSpace

答え2

POSIXによると、フィールドは次の文字で区切られた行の一部です。IFS、これ」入力フィールド区切り記号(または内部フィールド区切り記号)。「デフォルトは空白、水平タブ、改行順です。Bashを使用すると、を実行してprintf '%q\n' "$IFS"その値を表示できます。

答え3

そのユーティリティによって異なりますが、cut「フィールド」の場合は、テキスト行の先頭から始まり、最初のタブまでのすべての内容が含まれます。 2番目のフィールドは、最初のタブの後の文字で始まり、次のタブまで続きます。 3番目、4番目...タブ間、行の始まりとタブ間、タブと行の終わりの間のすべてです。

「-d」オプションを使用してフィールド区切り文字を指定しない限り、最初cut -d: -f2と2番目のコロン(':')文字の間のすべての内容を取得します。

他のユーティリティは定義が異なりますが、タブ文字は一般的です。フィールドが1つ以上の空白文字に基づいて区切られているため、厳しすぎる場合はawkこれが良い代替方法です。ほとんどの場合、これはより自然ですが、いくつかの構文を知る必要があります。次のように2番目のフィールドを印刷するには:cutawkawk

awk '{print $2}'

sort私をだました人。現在のsortマニュアルページには、フィールド区切り文字について「空白ではなく空白を空白に変換する」などの内容が記載されています。何らかの理由でsortフィールドを正しく定義するには、何度も試してください。join明らかに、「スペースで区切られた」フィールドを使用することはawk基本的に行われます。

物語の教訓は気をつけて知らなければ実験してみるようにということです。

答え4

cutコマンドを使用するには2つの主要なパラメーターが必要です。

-d:区切り文字を表します。

-f : 入力ファイルから切り取るフィールドを示します。

Ex. cut - d "|"  - f1, 2 input_filename

ここでは、output入力ファイルから2つのフィールドのみを削除する区切り文字「|」で区切ります。

ファイルに次の行がある場合

Alex|120000|Admin|1999

次に、2つのフィールドを切り取ります。

Alex|120000

関連情報