在最后一行上方新建一行并在其中添加一些内容

在最后一行上方新建一行并在其中添加一些内容

就像相反的,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

相关内容