【发布时间】:2013-03-14 22:21:49
【问题描述】:
当我使用像a=10这样的正常值时
我能够让 sed 查找/替换工作
sed -e "s/xxx/$a/g" a.txt
但是当我尝试使用像a=http://xyz.com这样的变量时
sed -e "s/xxx/$a/g" a.txt 不工作...
我认为它抛出未知选项错误是由于变量上存在转义字符
【问题讨论】:
当我使用像a=10这样的正常值时
我能够让 sed 查找/替换工作
sed -e "s/xxx/$a/g" a.txt
但是当我尝试使用像a=http://xyz.com这样的变量时
sed -e "s/xxx/$a/g" a.txt 不工作...
我认为它抛出未知选项错误是由于变量上存在转义字符
【问题讨论】:
使用 awk,您的字符串可以包含任何字符,包括 /、@、换行符等:
$ a="http://xyz.com"
$ echo "<xxx>" | awk -v a="$a" '{gsub(/xxx/,a)}1
<http://xyz.com>
【讨论】:
试试这个:
sed -e "s@xxx@$a@g" a.txt
【讨论】:
sed -e "s>xxx>$a>g" a.txt?
<,> 是 url 的无效字符。 stackoverflow.com/questions/7109143/… 但是,如果有一个不需要这些问题的解决方案,你是对的……我们应该这样做。