如何使用sed替换文件中的第一个事件?

如何使用sed替换文件中的第一个事件?

我想在任何现有的#包含之前用额外的include指令更新大量的C+源文件。对于这类任务,我通常使用一个带有sed的小bash脚本来重写文件。

我怎么才能sed只替换文件中字符串的第一次出现而不是替换每一次事件?

如果我用

sed s/#include/#include "newfile.h"\n#include/

它取代了所有#包括。

实现同样目标的替代建议也受到欢迎。


江户川乱折腾
浏览 1191回答 3
3回答

守着星空守着你

 # sed script to change "foo" to "bar" only on the first occurrence  1{x;s/^/first/;x;}  1,/foo/{x;/first/s///;x;s/foo/bar/;}  #---end of script---或者,如果你喜欢:编者注:与GNU sed只有。sed '0,/RE/s//to_that/' file来源

catspeake

sed&nbsp;'0,/pattern/s/pattern/replacement/'&nbsp;filename这对我有用。例sed&nbsp;'0,/<Menu>/s/<Menu>/<Menu><Menu>Sub&nbsp;menu<\/Menu>/'&nbsp;try.txt&nbsp;>&nbsp;abc.txt编者按:两者都与GNU&nbsp;sed只有。
打开App,查看更多内容
随时随地看视频慕课网APP