我有一个文件,其中包含许多由制表符分隔的字段。我正在尝试打印除第一列之外的所有列,但想用 AWK将它们全部打印在一个列中。文件的格式是
col 1 col 2 ... col n
一行中至少有 2 列。
样本
2012029754 901749095
2012028240 901744459 258789
2012024782 901735922
2012026032 901738573 257784
2012027260 901742004
2003062290 901738925 257813 257822
2012026806 901741040
2012024252 901733947 257493
2012024365 901733700
2012030848 901751693 260720 260956 264843 264844
因此,我想告诉 awk 将第 2 列打印到第 n 列,当 n 大于 2 时,当该行的第 n 列中没有信息时,不打印空行,所有信息都在一个列中,如下所示。
901749095
901744459
258789
901735922
901738573
257784
901742004
901738925
257813
257822
901741040
901733947
257493
901733700
901751693
260720
260956
264843
264844
这是我第一次使用 awk,所以请多多包涵。我从命令行编写了这个,它有效:
awk '{i=2;
while ($i ~ /[0-9]+/)
{
printf "%s\n", $i
i++
}
}' bth.data
这更像是寻求批准,而不是询问在 AWK 中这样做是否是正确的方法,或者是否有更好/更短的方法。
请注意,实际的输入文件可能有数百万行。
谢谢