我想在一个包含~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...
我做错了什么?
答案 0 :(得分:4)
如果使用printf
,print
会添加换行符。
awk '{printf("%d, %d, %d, ", 22, $1, NR); for(i=2;i<=NF;++i) printf("%d, ", i)}' file
或者您可以使用ORS
和OFS
,输出记录分隔符和输出字段分隔符。通常,您可以在BEGIN
语句中添加这些语句:
awk 'BEGIN { ORS = " " } {print 22, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file
请注意,需要额外的printf "\n"
,否则一切都会在一行上结束......
答案 1 :(得分:1)