仅使用 sed 在第一个匹配后添加一行

Adi*_*ala 1 bash sed pattern-matching

我正在使用 sed 并且我有一个文件包含

苹果
橙子
香蕉
橙子

我只想在第一个橙子之后插入“梨”。所以输出应该是这样的

苹果
橙子

香蕉
橙子

我使用了这个 sed 选项:

sed -i '0,/orange/a pear' 文件名

但这给了我这样的输出:

苹果

橙子

香蕉
橙子

pot*_*ong 5

这可能对你有用(GNU sed):

sed '0,/orange/!b;//a\pear' file
Run Code Online (Sandbox Code Playgroud)

重点关注从文件开头0到字符串第一次出现的行范围orange,否则就退出。如果该行包含第一次出现的字符串orange,则追加该字符串pear