sed找到匹配后的第一个空行并替换

时间:2017-07-14 14:51:16

标签: bash sed sh

我正在尝试在匹配后找到第一个空行并将其替换为我的文本。例如,如果模式是作者:

Authors
-----
author1
author2
author3
...
authorN

-----

我希望sed附加一个额外的作者和一个新行:

Authors
-----
author1
author2
author3
...
authorN
authorAdded

-----

这些模式在文件数据库中是可变长度和位置。

2 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

sed '/^Authors/!b;:a;n;/./ba;inew author' file

像往常一样打印其他以Authors开头的行。然后像往常一样打印非空行,并在第一个空行插入所需的字符串。注:空行也将被打印

答案 1 :(得分:0)

我认为awk是您最好的选择:

$ cat test.txt
Count
-----
1
2
3
4
5

-----

$ awk '{ if ($1=="") { print last+1; last=last+1; print ""; } else { print; last=$1 } }' test.txt 
Count
-----
1
2
3
4
5
6

-----