Url 反斜杠

Url 反斜杠,url,sed,Url,Sed,我有以下几点。我用克拉分隔的文本文件中的值替换html中的一些字段 while IFS=^ read col1 col2 col3 col4 col5 col6 do echo $col1 echo "HtmlFor$col1" >> "SiteHtml.txt" cat $FILENAME1 | sed "s/var1/$col1/" | sed "s/var2/$col2/"| sed "s/var3/$col3/" | sed "s/v

我有以下几点。我用克拉分隔的文本文件中的值替换html中的一些字段

while  IFS=^ read col1 col2 col3 col4 col5 col6
do
    echo $col1
      echo "HtmlFor$col1" >> "SiteHtml.txt"
      cat $FILENAME1 | sed  "s/var1/$col1/" | sed  "s/var2/$col2/"| sed  "s/var3/$col3/" | sed  "s/var4/$col4/" | sed  "s/var5/$col5/" >> "SiteHtml.txt"
      # | sed  "s/var3/$col3/" | sed  "s/var4/$col4/" | sed  "s/var5/$col5/" | sed  "s/var6/$col6/"
done
如果列中有反斜杠,我会得到一个错误。如果我试图用/来逃避它们,我仍然会出错。它只有在我移除它们的情况下才有效,而我不能这样做。
我做错了什么?

您需要使用3个反斜杠来替换“sed”中的单个反斜杠

例如:

echo "\\" | sed "s/\\\/replace/"
原因是:第一个\转义第二个\作为参数传递,并且一旦在二进制参数内传递,将类似于s/\/replace,现在当程序解析字符串时,第二个\转义第三个\以最终获得要替换为“\”的字符串

可能会有很多事情出错,因为\可能会逃脱。其中一件事可能会困扰你

当我们在字符串中使用“\”时,它位于c、n或任何其他有意义的特殊字符旁边 您“\”是字符串$col1变量的最后一个字符,当sed解析该字符串时,该变量的含义将被忽略。 如果不看到HTML被解析,我不能说太多

注意:这些并不是唯一可能给您带来错误的东西,但是您已经大致了解了反斜杠如何影响sed中的字符串解析,希望您能够找到解决方案


PS:希望您也知道,在双引号之间传递的任何内容在作为参数传递之前都会被shell的值替换,而在单引号之间传递的任何内容都不会被其值替换

这里是另一个版本:

echo "\\" | sed "s [\] replace "