Bash 从命令行替换文件中多个位置的字符串

Nan*_*ani 2 sed string text-processing replace

我有一个包含以下内容的文件。我想替换chrome为chromeBackup但不是在所有地方。

Name=chrome
XXXXXXXXXXX
Run=bin -app "chrome/chrome.sh"
XXXXXXXXXXX
Vol.apps/chrome=chrome
XXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

所需输出:

Name=chrome
XXXXXXXXXXX
Run=bin -app "chromeBackup/chromeBackup.sh"
XXXXXXXXXXX
Vol.apps/chromeBackup=chromeBackup
XXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

Prv*_*dav 7

根据你提供的信息,你想在两个地方替换它,所以你可以使用:

sed -e /^Run/s/chrome/chromeBackup/g -e /^Vol/s/chrome/chromeBackup/g file_name
Run Code Online (Sandbox Code Playgroud)

编辑

正如@Kusalananda 在他的评论中提到的,较短的版本是:

sed -E '/^(Run|Vol)/s/chrome/&Backup/g' file_name
Run Code Online (Sandbox Code Playgroud)

  • 或者可能是`sed -E '/^(Run|Vol)/s/chrome/&Backup/g'`。 (4认同)