Bash заменить строку в нескольких местах в файле из командной строки

Это действительно очень частичный ответ, но, по крайней мере, в списке рассылки netdev (для сетевой подсистемы) иногда встречаются сообщения об ошибках, сообщаемых в bugzilla; эти сообщения отправляются в список рассылки netdev с копией потенциальным владельцам кода, например: http://www.spinics.net/lists/netdev/msg351687.html

2
15.03.2019, 08:12
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
7
27.01.2020, 21:51

Возможно, в более общем плане измените все экземпляры, кроме тех, которые находятся в начальной строке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илиVol

from="chrome"; to="${from}Backup"; sed -E "/^Run|^Vol/ s/$from/$to/g" fileToChange
1
27.01.2020, 21:51

Теги

Похожие вопросы