linux - 将 sed 与包含 url 的变量一起使用

标签 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

如果文件中没有换行符,它会起作用。

最佳答案

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

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

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

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

关于linux - 将 sed 与包含 url 的变量一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405956/

相关文章:

java - 为什么在 Java 中通过 JNA 调用 fork 不可靠?

bash - 从命令行交换或替换二进制文件中的字节

bash - Unix:Bash:使用 head 命令后脚本会出现

docker - sed 操作在 Dockerfile 中被覆盖

bash - sed 插入文件内容而不是文件名

linux - 使用 sed 在 Linux 中替换多个字符

linux - Shell 脚本 -path 和运行命令在一行中

linux - 从大文本中复制值(数字)

c - 什么时候在 GNU C 中使用分离线程?

arrays - 在 Bash 中打印多个迭代数组,以便它们交替