Awk:打印未确定的列数

Awk:打印未确定的列数,awk,Awk,我有一个文件,其中包含许多字段,这些字段由tab分隔。我正在尝试打印除第一列以外的所有列,但希望使用AWK仅在一列中打印所有列。该文件的格式为 col 1 col 2 ... col n 一行中至少有2列 样本 2012029754 901749095 2012028240 901744459 258789 2012024782 901735922 2012026032 901738573 257784 201202726

我有一个文件,其中包含许多字段,这些字段由tab分隔。我正在尝试打印除第一列以外的所有列,但希望使用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,当该行的第n列中没有信息时,将第2列打印到第n列,n大于2,而不打印空行,所有内容都在一列中,如下所示

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中这样做是正确的方式还是有更好/更短的方式

请注意,实际输入文件可能有数百万行


谢谢

这是您想要的输出吗

awk '{for(i=2; i<=NF; i++) print $i}' bth.data

NF
是其中之一。它表示给定输入行上的字段数。例如,如果您希望始终打印一行
print$NF
中的最后一个字段,则此选项非常有用。当然,如果您想遍历给定行上的全部或部分字段,直到行的末尾。

似乎
awk
是错误的工具。我会:

cut -f 2- < bth.data | tr -s '\t' '\n'
cut-f2-

请注意,使用
-s
,这可以避免打印原始问题中所述的空行。

我有点困惑您期望的输出是什么,您能为您显示的输入提供一些示例输出吗?你想跳过第1列并打印其他所有内容吗?因此,
cut-f2-bth.data
不能满足你的要求吗?谢谢Neil,但我希望所有内容都在一列中。你是不是缺少了输出中的第一个数字(第1行的第2列901749095)?是的。那么NF是特定行中的字段数,我想?@Hameed是的,这是正确的,我正要对答案添加一些解释:)谢谢。这同样有效,但我最初的问题是关于AWK的,所以我不想不接受上述答案。:)
cut -f 2- < bth.data | tr -s '\t' '\n'