sed with&在变量

时间:2010-01-18 10:59:44

标签: variables sed

我想用sed搜索和替换,并用包含&等特殊符号的变量替换。

例如,我做了类似的事情:

sed "s|http://.*|http://$URL|"

其中URL=1.1.1.1/login.php?user=admin&pass=password。我认为这成了问题,因为我在变量中使用了?&

如何进行搜索和替换?

提前致谢

5 个答案:

答案 0 :(得分:2)

URL="1.1.1.1/login.php?user=admin&pass=password"
URL=$(echo "$URL" | sed 's/&/\\&/')    # substitute to escape the ampersand
echo "$OTHER" | sed "s|http://.*|http://$URL|"

答案 1 :(得分:1)

替换中的

?不是问题。 &需要以\&转义。

答案 2 :(得分:1)

以下对我有用(在bash脚本中):

URL="1.1.1.1/login.php?user=admin\\&pass=password"

echo "http://something" | sed -e "s|http://.*|http://$URL|"

输出结果为:

http://1.1.1.1/login.php?user=admin&pass=password

答案 3 :(得分:1)

使用awk

URL="1.1.1.1/login.php?user=admin&pass=password"
awk -vurl="$URL" '/http:\/\//{  gsub("http://" , "http://"url) }1' file

但你真的确定你只想替换http:// ??

答案 4 :(得分:0)

$ URL="1.1.1.1/login.php?user=admin&pass=password"
$ echo "http://abcd" | sed -e "\|http://.*|c$URL"
1.1.1.1/login.php?user=admin&pass=password