使用带有包含url的变量的sed

时间:2014-03-14 13:09:39

标签: linux bash sed escaping debian

80我正在尝试读取文件并用另一个文件的内容替换占位符。问题是变量包含url,这似乎在sed中引起问题。另外:如何处理来自images.txt的新行?有没有办法让我的解决方案有效?或者是否有另一种解决方案更适合我的问题?我想用备份文件的内容覆盖文件的内容。此外,该步骤应包括用第三个文件的内容替换占位符。谢谢。 我目前使用的是:

<images.html
TEXT=$(<images.txt)
sed 's~URLS~$TEXT~g' imagesbu.html > images.html

这不起作用,只显示:

sed: -e expression #1, char 80: unknown option to `s'

该文件的内容是:

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

如果文件中没有换行符,则无效。

1 个答案:

答案 0 :(得分:1)

尝试更改sed分隔符,使其不是正斜杠:

sed "s~URLS~$TEXT~g" imagesbu.html > images.html

编辑:由于上述原因,您的原始sed命令不起作用,并且因为您尝试用多行替换单个单词。请尝试awk

awk -v u="$TEXT" '{gsub(/URLS/,u)}1' imagesbu.html > images.html