【问题标题】:Find and replace match after string in different file from bash script - not working在 bash 脚本的不同文件中查找并替换字符串后的匹配项 - 不起作用
【发布时间】:2022-10-24 20:54:59
【问题描述】:

我有一个字符串存储在 file2.sh 中名为 newOccupation 的变量中。当我运行 file2.sh 时,我希望它用存储在 newOccupation 中的字符串替换单词“occupation=”之后的任何内容。

所以在这种情况下,运行脚本后,职业=“收银员”应该更改为职业=“教师”

我试图从Find and Replace Inside a Text File from a Bash Command 的一个非常相似的线程中复制一些东西 但它似乎不起作用。我不确定这是否是由于尝试在执行的命令中插入变量而不是字符串导致的格式问题。

文件1.txt

name="Bobby"
age="23"
occupation="Cashier"
favoriteColor="Red"

文件2.sh

newOccupation="Teacher"
sed -i -e 's/[occupation=]+/"'${newOccupation}'"/g' file1.txt

【问题讨论】:

    标签: linux bash shell sed


    【解决方案1】:

    更改您的 file2.sh:

    newOccupation="Teacher"
    sed -i "s/occupation=".*"/occupation="${newOccupation}"/" file1.txt
    

    【讨论】:

      【解决方案2】:

      更改您的 sed 代码应该可以工作

      $ cat file2.sh
      newOccupation="Teacher"
      sed -Ei.bak "s/(occupation=")[^"]*/${newOccupation}/" file1.txt
      

      【讨论】:

        猜你喜欢
        • 2019-11-03
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-07
        • 2014-02-17
        • 2014-03-12
        • 2012-04-21
        相关资源
        最近更新 更多