2

次のようなファイルの場合:

Paul    white male 34 
Jane    black female 22
Sam     white male 44

上記で実行して次のように生成できるように、同じ行の最初の列の後のすべてを2番目の列として処理するawk行が必要です

white male 34 
black female 22
white male 44

現在、 awk '{print $2} は最初の単語のみを出力し、行の残りは出力しません。

ありがとう!

4

2 に答える 2

2

最初のスペース文字と残りのスペースに応じて、これらのいずれかが機能するはずです。

awk '{sub(/[^ ]+[ ]+/,"")}1' file
awk -F'\t' '{print $2}' file
于 2013-01-14T22:02:16.337 に答える
0

Ed Morton は、標準的な方法を提供し、ニーズに合わせて機能します。

私は別の(トリッキーな)方法について言及します:

awk 行では、 print の代わりに、行全体$2を設定して印刷することができます。$1=""

awk '!($1="")' file

テストを参照してください:

kent$  echo "Paul    white male 34 
Jane    black female 22
Sam     white male 44"|awk '!($1="")'
 white male 34
 black female 22
 white male 44

このワンライナーは非常に短く、出力を提供します。ただし、各行には先行ブランクがあります。また、次の方法でも簡単に削除できます。

awk '!($1="")&&gsub(/^ /,"")'
于 2013-01-14T22:55:43.183 に答える