如何在搜索后通过变量替换单词?

时间:2014-04-16 10:03:33

标签: bash ubuntu awk sed bin

我有这样的问题。在一个文本文件(名为sampleText.txt)中有这样的网址,

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 

我希望你能帮助我。任何帮助将不胜感激,谢谢......:)

3 个答案:

答案 0 :(得分:1)

如果我理解您的意图,您想要将以webURL =开头的行中的每个网址更改为“www.google.com”吗?如果是这样,你只需

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

如果混合使用单引号和双引号,则可以使用

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

将标准化为双引号。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

脚本可以更新为:

#!/bin/bash 

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