sed с и в переменной

Я хотел бы искать и заменить sed и заменой чем-то в переменной, которая содержит некоторые символы экстренного сообщения как &.

Например, я сделанный что-то как этот:

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

где URL=1.1.1.1/login.php?user=admin&pass=password. Я думаю, что это стало проблемой, потому что я использую ? и & в моей переменной.

Как я могу сделать свой поиск и замену?

Заранее спасибо

6
задан pl0nk001 9 September 2013 в 18:02
поделиться

5 ответов

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|"
2
ответ дан 17 December 2019 в 04:47
поделиться

? В замене не является проблемой. & необходимо сбежать как \ & .

1
ответ дан 17 December 2019 в 04:47
поделиться

Следующее работало для меня (в скрипте 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
1
ответ дан 17 December 2019 в 04:47
поделиться

Используйте awk

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

, но вы действительно уверены, что вы просто хотите заменить http: // ??

1
ответ дан 17 December 2019 в 04:47
поделиться
$ 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
0
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: