【问题标题】:How to replace a word through a variable after searching?搜索后如何通过变量替换单词?
【发布时间】:2014-04-17 16:01:28
【问题描述】:

我有这样的问题。在一个文本文件(称为 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 

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

【问题讨论】:

  • 你遇到了什么错误?
  • shopt -s globstar 在这里的作用是什么?
  • @fedorqui ,运行此脚本后,文件 (sampleText.txt) 的 webURL 部分不会发生任何变化,它与以前相同。目前 webURL=hht://localhost.com ,我需要将其更改为 webURL= www.google.lk 。谢谢你,希望你能回复我,任何帮助将不胜感激...... :)
  • @user3440631 你也检查过awk -F\" '/^webURL/{print $2}' sampleText.txt 行的输出吗?是显示网址吗?
  • @Jayesh,是的,它清楚地显示了 webURL 值......那部分工作正常,bt 替换这不起作用,,,......

标签: bash ubuntu awk sed bin


【解决方案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\"/}"

这将规范化为双引号。

【讨论】:

  • 你好@veryhungrymike ...谢谢你的信息,
  • 如果 webURL 带有单引号 (webURL = 'sampledoamin.com') ,那么下面的行将如何更改为以单引号开头的字符串搜索,? ** {$ sed -i.bak -r '/^webURL/{s/"[^"]+"/"www.google.com"/}' sampleText.txt }** 希望你能帮助我。任何非常感谢您的帮助。谢谢。
  • @user3440631 只需更改为单引号。检查我更新的答案。
【解决方案2】:
sed -i "s|\("webURL" *= *\).*|\1www.google.com|" sampleText.txt

【讨论】:

    【解决方案3】:

    脚本可以更新为:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 2011-09-25
      • 2011-09-13
      相关资源
      最近更新 更多