sed,如何用2行代替一行?

AZh*_*Zhu 9 regex debian replace sed insert

我试图用debian中的sed替换1行2行,这是我想出的:

 sed -i 's/You are good/You are good\n You are the best/g' /output.txt
Run Code Online (Sandbox Code Playgroud)

然而,当我这样做时,sed一直在抱怨说's'的未知选择.

有人可以帮忙吗?

谢谢!

sid*_*yll 10

如果你在bash中试试这个:

sed -i.bak $'s/You are good/You are good\\\nYou are the best/g' /output.txt
Run Code Online (Sandbox Code Playgroud)

奇怪,是吗?但似乎工作.也许sed无法正确处理换行符,因此需要使用另一个反斜杠进行转义,因此在进入sed之前\\它将成为单个\.

另请注意,您没有将扩展程序传递给-i.


编辑

刚刚找到另一个解决方 由于换行符需要在传递给sed时被转义(否则它认为它是命令终止符)你实际上可以使用单引号和返回,只需在输入换行符之前插入反斜杠.

$ echo test | sed 's/test/line\
> line'
line
line
Run Code Online (Sandbox Code Playgroud)


gle*_*man 7

或者,而不是搜索和替换(s命令),搜索和追加(a命令)

sed -i '/Your are good/a You are the best' filename
Run Code Online (Sandbox Code Playgroud)

  • 如何以空格开始新行?假设我正在编辑 YAML 文件 (3认同)