Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在搜索后通过变量替换单词?_Bash_Ubuntu_Awk_Sed_Bin - Fatal编程技术网

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

Bash 如何在搜索后通过变量替换单词?,bash,ubuntu,awk,sed,bin,Bash,Ubuntu,Awk,Sed,Bin,我有这样的问题。在一个文本文件(称为sampleText.txt)中,有这样的web url webURL = "localhost.com"; 我想使用bash脚本更改此值。但我 试过这个我的剧本,但没用, 这是我的剧本 我希望你能帮助我。任何帮助都将不胜感激,谢谢……:) 如果我理解您的意图,您希望将以webURL=开头的行中的每个URL更改为“www.google.com”?如果是这样,你只需 $ sed -i.bak -r '/^webURL/{s/"[^"]+"/"www.go

我有这样的问题。在一个文本文件(称为sampleText.txt)中,有这样的web url

webURL = "localhost.com"; 
我想使用bash脚本更改此值。但我 试过这个我的剧本,但没用, 这是我的剧本




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

如果我理解您的意图,您希望将以
webURL=
开头的行中的每个URL更改为“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

您遇到了什么错误?shopt-s globstar在这里有什么用途?@fedorqui,运行此脚本后,文件的webURL部分(sampleText.txt)不会发生任何更改,它与以前一样。当前是webURL=hht://localhost.com ,我需要将其更改为webURL=www.google.lk。谢谢,希望您能回复我,任何帮助都将不胜感激……)@user3440631您也检查了
awk-F \“/^webURL/{print$2}”sampleText.txt的输出了吗?它是显示url吗?@Jayesh,是的,它清楚地显示了webURL值…该部分工作正常,bt替换它不工作,,,,,,…您好@veryhungrymike…谢谢您的信息,如果webURL带有单引号的话(webURL=”),那么下面这行将如何改为字符串搜索,从单引号开始,***{$sed-i.bak-r'/^webURL/{s/“[^”]+“/”www.google.com/}'sampleText.txt}**希望你能帮助我。任何帮助都将不胜感激。谢谢。@user3440631只需改为单引号。检查我的更新答案。
#!/bin/bash 

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