linux 在bash脚本的不同文件中查找和替换字符串后的匹配项-不工作

yzxexxkh  于 2022-11-02  发布在  Linux
关注(0)|答案(2)|浏览(154)

我在www.example.com中的一个名为newOccupation的变量中存储了一个字符串file2.sh。当我运行file2.sh时,我希望它用newOccupation中存储的字符串替换单词“occupation=”后面的内容。
因此,在本例中,运行脚本后,应将职业=“出纳员”更改为职业=“教师”
我试图从一个非常相似的线程Find and Replace Inside a Text File from a Bash Command中复制一些东西,但似乎不起作用。我不确定是否是由于在执行的命令中插入变量而不是字符串的格式问题。
file1.txt

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

file2.sh

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

lb3vh1jj1#

更改您的file2.sh:

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

vu8f3i0k2#

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

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

相关问题