0

多くのデータ フィールドを含むパイプ区切りファイルがあります。私は gawk を使用してそれらを分離しようとしています。ログは次のようになります。

United States|San Francisco|CA|...goes on...
Germany|Quebec City|Quebec|...goes on...

出力形式は次のようになります。

Country: United States
City: San Francisco
State: CA
...goes on...

問題は... $1 を $15 まで自動的に増やす方法はありますか? $16 をスキップして、再び自動増額しますか? これで gawk スクリプトをハードコーディングしたくありません。

print "Country:\t", $1
print "City:\t", $2
print "State:\t", $3
4

2 に答える 2

2

for ループと if 条件を使用できます。

awk -v FS='|' '
   BEGIN{split("country;city;state",a,";")}
   {for (i=1;i<NF;i++) if (i != 16) print a[i],i}' input
于 2013-09-03T21:40:13.363 に答える
0

完全に明確ではありませんが、切り捨てられた入力が次のようになっている場合:

United States|San Francisco|CA|Salem|OR...

都市/州のペアを列挙しようとしているだけの場合は、次のことができます。

for( i = 2; i <= NF ;i+=2 ) {
  print "City:\t", $i
  print "State:\t", $(i+1)
}
于 2013-09-03T21:11:58.210 に答える