![OSX 中的多行替换跨行复制](https://linux22.com/image/4880/OSX%20%E4%B8%AD%E7%9A%84%E5%A4%9A%E8%A1%8C%E6%9B%BF%E6%8D%A2%E8%B7%A8%E8%A1%8C%E5%A4%8D%E5%88%B6.png)
我对它有点生疏,自从搬到 Mac 后就没有太多使用它,但经过几次搜索后sed
我意识到,每个 Ubuntu 与 Mac 上使用的东西似乎有所不同。sed
我想要做的是将 XML 文件的第一部分替换为一些新值。在刷新我的知识后,sed
我决定使用:
sed -e '1,/<\/value>/ s/.*/\<something\>lorem ipsum\<\/something\>\n\<again\>wednesday\<\/again\>\n/' $theFile
当我运行代码时,它会<something>lorem ipsum</something>n<again>wednesday</again>n
在从第一行到</value>
结束的所有行上输出。
所以我的问题是,在所需的新行上替换文件内容而不在每一行上重复它的适当方法是什么?
答案1
这sed
是线-editor,以便将脚本应用于所寻址的每一行。因此,您应该收集您想要使用n
ewline 分隔符在一个字符串中交换的行:
sed -e '1{:1;N;/<\/value>/b1;s/.*/\<something\>lorem.....\n/}' $theFile
另一种方法是i
在块之前插入必要的文本,然后删除块:
sed -e '1i\\<something\>lorem.....\n' -e '1,/<\/value>/d' $theFile