Awk:打印未确定数量的列
发布时间:2020-12-14 02:09:34 所属栏目:Linux 来源:网络整理
导读:我有一个文件,其中包含由制表符分隔的许多字段.我正在尝试打印除第一列之外的所有列,但是想要使用AWK仅在一列中打印它们.文件的格式是 col 1 col 2 ... col n 一行中至少有两列. 样品 2012029754 9017490952012028240 901744459 2587892012024782 9017359222
我有一个文件,其中包含由制表符分隔的许多字段.我正在尝试打印除第一列之外的所有列,但是想要使用AWK仅在一列中打印它们.文件的格式是
col 1 col 2 ... col n 一行中至少有两列. 样品 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列大于2的n而不打印空白行,如果该行的列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 "%sn",$i i++ } }' bth.data 这更像是一个寻求批准,而不是问一个问题,这是在AWK中做这样的事情的正确方法,还是有更好/更短的方式. 请注意,实际输入文件可能是数百万行. 谢谢 解决方法
这是你想要的输出吗?
awk '{for(i=2; i<=NF; i++) print $i}' bth.data 给 901749095 901744459 258789 901735922 901738573 257784 901742004 901738925 257813 257822 901741040 901733947 257493 901733700 901751693 260720 260956 264843 264844 NF是几个pre-defined awk variables中的一个.它表示给定输入行上的字段数.例如,如果要始终打印行打印$NF中的最后一个字段,则非常有用.或者当然,如果您想迭代给定行上的全部或部分字段到行尾. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |