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 回答