下面我正在设置从文件读取的变量:
$ replace=$(cat file.txt)
我正在尝试使用sed,如下所示
$ sed -i 's|old|'$replace'|g'
但是,我收到以下错误:
sed: -e expression #1, char 7: unterminated `s' command
注意 - 在我的情况下,替换字符串是从具有空格和换行符的文件中读取的,如下所示。
file.txt的
line 1
line 2
可以处理有新行的模式吗?
答案 0 :(得分:0)
有可能吗?可能虽然可能有一些不可移植的GNU扩展,但它不是sed是什么(单个行上的简单替换)所以不要用sed做,只需使用awk:
awk 'NR==FNR{new = new $0 ORS; next} {sub(/old/,new)}1' file.txt targetFile
请注意,您不需要使用cat
的shell变量来执行此操作,但如果您愿意,可以使用它:
replace=$(cat file.txt)
awk -v new="$replace" '{sub(/old/,new)}1' targetFile