使用sed插入文件内容

rid*_*dan 10 bash sed

我正在尝试在给定模式之前插入文件内容

这是我的代码:

sed -i "" "/pattern/ {
i\\ 
r $scriptPath/adapters/default/permissions.xml"
}" "$manifestFile"
Run Code Online (Sandbox Code Playgroud)

它添加路径而不是文件的内容.

有任何想法吗 ?

Tod*_*obs 20

为了模式之前插入文本,您需要在读入文件之前将模式空间交换到保留空间.例如:

sed "/pattern/ {
         h
         r $scriptPath/adapters/default/permissions.xml
         g
         N
     }" "$manifestFile"
Run Code Online (Sandbox Code Playgroud)

  • 只要`pattern`在最后一行_not_就可以正常工作. (3认同)
  • sed似乎对'r'命令非常挑剔。根据http://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq5_008.html的说明:“文件名之前或之后的任何其他字符都被解释为文件名的一部分。” 我试过`r someFile.txt#插入...的内容,它默默失败了。 (2认同)

Igo*_*bin 5

只需删除i\\.

例子:

$ cat 1.txt
abc
pattern
def

$ echo hello > 2.txt

$ sed -i '/pattern/r 2.txt' 1.txt

$ cat 1.txt
abc
pattern
hello
def
Run Code Online (Sandbox Code Playgroud)

  • 它插入到图案之后。如何在其前面插入内容? (3认同)