次のようなファイルの場合:
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} は最初の単語のみを出力し、行の残りは出力しません。
ありがとう!
最初のスペース文字と残りのスペースに応じて、これらのいずれかが機能するはずです。
awk '{sub(/[^ ]+[ ]+/,"")}1' file
awk -F'\t' '{print $2}' file
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(/^ /,"")'