Bash脚本中的Linux SED命令从字符串中删除

use*_*858 4 linux sed strip

我一直在整理一个bash脚本,在其中我需要用一些必要的信息来更新文件.我正在使用的命令如下:

sudo sed '
/end/ a\
First line to update\
  param 1 'var1'\
  param 2 'var2'\
  param 3 'var3'\
  param 4 'var4'\
end\
' TestFile >TestFileNew
Run Code Online (Sandbox Code Playgroud)

现在这应该用数据更新文件,应该如下所示:

end
First line to update
  param 1 'var1'
  param 2 'var2'
  param 3 'var3'
  param 4 'var4'
end
Run Code Online (Sandbox Code Playgroud)

文件确实已经创建并且数据在其中但是它似乎从文本中剥离了'符号而我不希望发生这种情况,有人可以帮忙吗?实际生产的一个例子如下:

end
First line to update
  param 1 var1
  param 2 var2
  param 3 var3
  param 4 var4
end
Run Code Online (Sandbox Code Playgroud)

Igo*_*bin 6

使用""的外报价:

sudo sed "
/end/ a\\
First line to update\\
  param 1 'var1'\\
  param 2 'var2'\\
  param 3 'var3'\\
  param 4 'var4'\\
end\\
" TestFile >TestFileNew
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下使用```是可以接受的,但我认为使用`''并用''''替换内部单引号更安全,从而避免意外插值. (2认同)