Shell在最后一行空行后插入行

时间:2012-07-12 07:24:21

标签: bash shell insert sed

我正在尝试在文件中间最后一个空行之后插入一行文本。

示例文件:

some text
more text

blah blah blah
more blah

some more text
and even more text

插入的文本应该在该文件的第6行。到目前为止,我尝试过这样的命令:

sed '/\n/ i some text' file

但到目前为止,没有任何效果。有任何想法吗?感谢。

3 个答案:

答案 0 :(得分:1)

使用grep和awk的不同解决方案:

awk -v last_empty_line=$(grep -nE '^[[:blank:]]*$' your_file | tail -1 | cut -c 1) '{print; if (NR==last_empty_line) print "->some new text here"}' your_file

awk在最后一个空行之后插入新文本;使用适当的grep选择最后一个空行的索引,该grep找到空行(或仅填充空白字符),用管道输入尾部以选择最后一行。

答案 1 :(得分:0)

也许这可以帮助

perl -p00e 'eof&&s/^/-- new text --\n\n/' text.txt

答案 2 :(得分:0)

这可能适合你(GNU sed):

 sed ':a;$!{N;/\n$/!ba;p;d};s/^/-> some text\n/' file