OSX 中的多行替换跨行复制

OSX 中的多行替换跨行复制

我对它有点生疏,自从搬到 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,以便将脚本应用于所寻址的每一行。因此,您应该收集您想要使用newline 分隔符在一个字符串中交换的行:

sed -e '1{:1;N;/<\/value>/b1;s/.*/\<something\>lorem.....\n/}' $theFile

另一种方法是i在块之前插入必要的文本,然后删除块:

sed -e '1i\\<something\>lorem.....\n' -e '1,/<\/value>/d' $theFile

相关内容