Как заменить слово через переменную после поиска?

У меня такая проблема. В текстовом файле (который называется sampleText.txt) есть URL-адрес веб-сайта,

webURL = "localhost.com"; 

Я хочу изменить это значение с помощью сценария bash. Но я попытался с этим моим сценарием, но это не сработало, вот мой сценарий,


 #!/bin/bash URL=$(awk -F\" '/^webURL/{print $2}' sampleText.txt) echo $URL if [ "$URL" != "www.google.com" ]; then shopt -s globstar for file in sampleText.txt do sed -i.bak 's/$URL/www.google.com/g' $file done fi 

Надеюсь, ты поможешь мне. Любая помощь будет принята с благодарностью, спасибо … 🙂

Если я понимаю ваше намерение, вы хотите изменить каждый URL-адрес в строках, начинающихся с webURL = до «www.google.com»? Если это так, вы просто

 $ sed -i.bak -r '/^webURL/{s/"[^"]+"/"www.google.com"/}' sampleText.txt 

Если у вас есть смесь одиночных и двойных кавычек, вы можете использовать

 $ sed -i.bak -r "/^webURL/{s/['\"][^'\"]+[\"']/\"www.google.com\"/}" 

который будет нормализовать двойные кавычки.

 sed -i "s|\("webURL" *= *\).*|\1www.google.com|" sampleText.txt 

сценарий может обновляться до:

 #!/bin/bash url="www.google.com" sed -i.bak "/^webURL/{s@\"[^\"]*\"@\"$url\"@}" sampleText.txt