仅将第一个匹配行替换为 sed

voi*_*ces 6 osx bsd sed text-processing regular-expression

使用 BSD sed(无 GNU 扩展),我如何执行类似于下面提供的示例的操作,但替换是在出现模式的第一行执行,而不是行号(而不是必须指定实际数量)?

限制行号

最简单的限制是行号。
如果你想删除第3行的第一个数字,只需在命令前添加“3”即可:

sed '3 s/[0-9][0-9]*//' <filename >newfilename

来源: http: //www.grymoire.com/Unix/Sed.html#uh-26

voi*_*ces 0

这很完美:

sed '1,/abc/s/abc/xyz/' 文件.txt

可以缩写为:

sed '1,/abc/s//xyz/' 文件.txt

与 GNU 和 BSD 兼容:

sed '1,/[0-9][0-9]*/s///' <文件名>新文件名

  • 如果第一个匹配项位于第一行(如[常见问题解答中所述](http://sed.sourceforge.net/sedfaq4.html #s4.11)) (2认同)