我试图找到匹配后的第一个空行并将其替换为我的文本。例如,如果模式是作者:sed找到匹配后的第一个空行并替换
Authors
-----
author1
author2
author3
...
authorN
-----
我希望SED附加额外的作者和新行:
Authors
-----
author1
author2
author3
...
authorN
authorAdded
-----
这些图案是整个文件数据库变量的长度和位置。
我试图找到匹配后的第一个空行并将其替换为我的文本。例如,如果模式是作者:sed找到匹配后的第一个空行并替换
Authors
-----
author1
author2
author3
...
authorN
-----
我希望SED附加额外的作者和新行:
Authors
-----
author1
author2
author3
...
authorN
authorAdded
-----
这些图案是整个文件数据库变量的长度和位置。
我觉得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
-----
这可能为你工作(GNU SED):
sed '/^Authors/!b;:a;n;/./ba;inew author' file
打印线等那些与Authors
像往常一样开始了。然后像往常一样打印非空行,并在第一个空行插入所需的字符串。注:空行也将被打印
是否有多个这样的块? https://stackoverflow.com/questions/38972736/how-to-select-lines-between-two-patterns会让你开始...你可以使用[{}分组](https://www.gnu.org /software/sed/manual/sed.html#Common-Commands)只能在匹配的地址上执行命令 – Sundeep