![在最后一行上方新建一行并在其中添加一些内容](https://linux22.com/image/79314/%E5%9C%A8%E6%9C%80%E5%90%8E%E4%B8%80%E8%A1%8C%E4%B8%8A%E6%96%B9%E6%96%B0%E5%BB%BA%E4%B8%80%E8%A1%8C%E5%B9%B6%E5%9C%A8%E5%85%B6%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%BA%9B%E5%86%85%E5%AE%B9.png)
就像相反的,awk 'NR==2 {print ""} 1
在第一行下面添加一个新行并打印那里的任何内容。我无法NR==
用固定值替换后面的数字,因为我希望能够在文件中执行此操作,包括任意数量的行。我的意思是我想我可以做一些事情来计算行数,然后创建一个变量,它是倒数第二行的数字,但我不想“重新发明轮子”。
输入示例:
1
2
3
4
输出示例:
1
2
3
something added here
4
答案1
您可以延迟一行打印,然后使用一个END
块:
awk 'NR > 1 {print line} {line = $0} END {printf "%s\n%s\n", "something added here", line}'
我将当前行保存在 中line
,然后在下一次迭代中打印。END
因此,该块中line
是最后一行,尚未打印。
$ printf "%s\n" {1..4} | awk 'NR > 1{print line} {line = $0} END {printf "%s\n%s\n", "something added here", line}'
1
2
3
something added here
4