我正在尝试用存储在变量中的多行字符串替换文件中的单行。当打印到屏幕上时,我可以获得正确的结果,但是如果我想进行“就地”替换,则无法获得正确的结果。
该文件具有以下形式:
*some code*
*some code*
string_to_replace
*some code*
我希望生成的文件是:
*some code*
*some code*
line number 1
line number 2
line number 3
*some code*
我尝试的代码是:
new_string="line number 1\nline number 2\nline number 3"
# Correct output on screen
sed -e s/"string_to_replace"/"${new_string}"/g $file
# Single-line output in file: "line number 1line number 2line number 3"
sed -i s/"string_to_replace"/"${new_string}"/g $file
尝试组合-i和-e选项时,其结果与仅使用-i时的结果相同。有人可以帮我解决这个问题吗?
我在CentOS上使用GNU sed版本4.1.5(从Mac通过ssh连接到它)
在其中sed
可以双引号命令字符串,然后让shell为您扩展,如下所示:
new_string="line number 1\nline number 2\nline number 3"
sed -i "s/string_to_replace/$new_string/" file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句