スペースで区切られた複数の単語を印刷します。

スペースで区切られた複数の単語を印刷します。

次のデータ型(名前、年齢、国)のテキストファイルがあります。

michael jordans 25 US
adam smith 30 UK
chris wood ABC 22 Aus

cat text.txt | awk {'print $1'}-->コマンドを使用すると、次のものが印刷されます。

michael
adam
chris

しかし、フルネームを印刷したいです。

michael jordans
adam smith
chris wood ABC

どのコマンドを使用する必要がありますか?

フォーマットデータを変更できます。たとえば、次のようになります。

michael jordans|25|US
adam smith|30|UK
chris wood ABC|22|Aus

答え1

sed 's/^\([^0-9]*\).*/\1/' text.tex

これは、名前に数字が含まれておらず、名前の後のフィールドが数字で始まると仮定します。

|フィールドを次のように区切るとき

sed 's/^\([^|]*\).*/\1/' text.tex

またはawkを好むなら、これを行うことができます

awk -F\| '{print $1}' text.tex

答え2

正しいフィールド区切り文字を持つようにファイルを変更すると、|解決策は簡単です。

awk -F'|' '{print $1}' input_file

正しいフィールド区切り記号の代わりにスペースを使用する場合(予想フィールドにも表示されます)、次のことができます。

 awk '{ a = $1; for (i=2; i <= NF-2; i++) a = a " " $i; print a; }' input_file

関連情報