入力ファイルがあります。
A 123 name: 1 AAA
B 123 name: 2 AAA name: 3 BBB
C 234 name: 1 AAA name: 2 BBB name: 5 CCC
列が「name:」の場合は、次の列と次の列を印刷したいと思います。
これは私のawkコードです。
cat input.txt | awk '{for(i=1;i<=NF;i++)if($i == "name:")print $(i+1),$(i+2)}'
ただし、この例では、以下のようにすべての列が1行に一覧表示されます。
1 AAA
2 AAA
3 BBB
1 AAA
2 BBB
5 CCC
次のように列を印刷したいと思います。
1 AAA
2 AAA 3 BBB
1 AAA 2 BBB 5 CCC
ベストアンサー1
同じ行に値を印刷し、その行が反復を完了した後に新しい行を挿入するには、次のようprint
に置き換えます。printf
awk '{{for(i=1;i<=NF;i++)if($i == "name:") printf $(i+1)" "$(i+2)" "} print ""; }' yourfile
出力:
1 AAA
2 AAA 3 BBB
1 AAA 2 BBB 5 CCC