다음 내용이 포함된 파일이 있습니다. 나는 교체하고 싶지만 모든 곳 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
제공한 정보를 바탕으로 두 곳을 교체하려고 하므로 다음을 사용합니다.
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