Я хотел бы искать и заменить sed и заменой чем-то в переменной, которая содержит некоторые символы экстренного сообщения как &
.
Например, я сделанный что-то как этот:
sed "s|http://.*|http://$URL|"
где URL=1.1.1.1/login.php?user=admin&pass=password
. Я думаю, что это стало проблемой, потому что я использую ?
и &
в моей переменной.
Как я могу сделать свой поиск и замену?
Заранее спасибо
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|"
?
В замене не является проблемой. &
необходимо сбежать как \ &
.
Следующее работало для меня (в скрипте 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
Используйте awk
URL="1.1.1.1/login.php?user=admin&pass=password"
awk -vurl="$URL" '/http:\/\//{ gsub("http://" , "http://"url) }1' file
, но вы действительно уверены, что вы просто хотите заменить http: // ??
$ 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