次の内容を含むファイルがあります。私は交換したいのですが、どこでもchrome
そうchromeBackup
ではありません。
Name=chrome
XXXXXXXXXXX
Run=bin -app "chrome/chrome.sh"
XXXXXXXXXXX
Vol.apps/chrome=chrome
XXXXXXXXXXX
希望の出力:
Name=chrome
XXXXXXXXXXX
Run=bin -app "chromeBackup/chromeBackup.sh"
XXXXXXXXXXX
Vol.apps/chromeBackup=chromeBackup
XXXXXXXXXXX
答え1
提供した情報に基づいて2つの場所を交換しようとしているので、次のようにします。
sed -e /^Run/s/chrome/chromeBackup/g -e /^Vol/s/chrome/chromeBackup/g file_name
編集する
@Kusalanandaが彼のコメントで述べたように、より短いバージョンは次のとおりです。
sed -E '/^(Run|Vol)/s/chrome/&Backup/g' file_name
答え2
おそらくより一般的には、出発線のインスタンスを除くすべてのインスタンスを変更することです。Name=
from="chrome"; to="${from}Backup"; sed "/^Name/! s/$from/$to/g" fileToChange
または最初の行をスキップしてください。
from="chrome"; to="${from}Backup"; sed "2,$ s/$from/$to/g" fileToChange
Run
または or で始まる行のみVol
from="chrome"; to="${from}Backup"; sed -E "/^Run|^Vol/ s/$from/$to/g" fileToChange