我想用sed搜索和替换,并用包含&
等特殊符号的变量替换。
例如,我做了类似的事情:
sed "s|http://.*|http://$URL|"
其中URL=1.1.1.1/login.php?user=admin&pass=password
。我认为这成了问题,因为我在变量中使用了?
和&
。
如何进行搜索和替换?
提前致谢
答案 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