use*_*234 1 linux bash debian escaping sed
80我试图读取一个文件并用另一个文件的内容替换占位符。问题是变量包含 url,这似乎会导致 sed 出现问题。另外:如何从images.txt 中保留新行?有没有办法让我的解决方案起作用,或者是否有另一种更适合我的问题的解决方案?我想用备份文件的内容覆盖文件的内容。此外,该步骤应包括用第三个文件的内容替换占位符。谢谢你。我目前使用的:
<images.html
TEXT=$(<images.txt)
sed 's~URLS~$TEXT~g' imagesbu.html > images.html
Run Code Online (Sandbox Code Playgroud)
这不起作用,只显示:
sed: -e expression #1, char 80: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
文件内容为:
https://cdn.tutsplus.com/vector/uploads/legacy/tuts/165_Shiny_Dice/27.jpg
https://cdn.tutsplus.com/vector/uploads/legacy/tuts/165_Shiny_Dice/27.jpg
Run Code Online (Sandbox Code Playgroud)
如果文件中没有换行符,它就可以工作。
尝试更改sed
分隔符,使其不是正斜杠:
sed "s~URLS~$TEXT~g" imagesbu.html > images.html
Run Code Online (Sandbox Code Playgroud)
编辑:由于上述原因,您的原始 sed 命令不起作用,并且因为您试图用多行替换单个单词。试试吧awk
:
awk -v u="$TEXT" '{gsub(/URLS/,u)}1' imagesbu.html > images.html
Run Code Online (Sandbox Code Playgroud)