
次のデータ型(名前、年齢、国)のテキストファイルがあります。
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