我想将两列添加到大约 10,000 列的文件中。我想在每行插入 nr 22 作为第一列。然后我想要将原始第一列作为第二列,然后作为第三列我想要插入第 nr (NR) 行,之后我想要打印其余的原始列。我想我可以用下面的 awk 行来做到这一点:
awk '{print 22, $1, NR; for(i=2;i<=NF;++i) print $i}' file
它很好地打印了前三列(22、$1、NR),但之后,每个值都会开始一个新行,因此文件打印如下:
22 $1 NR
$2
$3
$4
etc...
代替:
22 $1 NR $2 $3 $4 etc...
我做错了什么?
怎么样使用printf
相反,因为print
添加换行符。
awk '{printf("%d, %d, %d, ", 22, $1, NR); for(i=2;i<=NF;++i) printf("%d, ", i)}' file
或者你可以玩ORS
and OFS
, the 输出记录分隔符和输出字段分隔符。通常你将它们添加到BEGIN
像这样的声明:
awk 'BEGIN { ORS = " " } {print 22, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file
请注意,额外的printf "\n"
是必需的,否则一切都会在一行上结束......
阅读更多内容gawk 手动输出分隔符 http://www.gnu.org/software/gawk/manual/gawk.html#Output-Separators
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)