Как добавить символы между строками в bash? - PullRequest
0 голосов
/ 25 января 2019

Подскажите, как добавить его с помощью команды sed.

[До пересмотра]

BONDING_OPTS="mode=1 miimon=200 primary=ens192" 

[После ревизии]

BONDING_OPTS="mode=1 miimon=200 primary=ens192 primary=eth0"

Я до сих пор преуспел.

sed "/BOND/s/$/primary=eth0/g" /etc/sysconfig/network-scripts/ifcfg-bond0

Выход:

BONDING_OPTS="mode=1 miimon=200 primary=ens192"primary=eth0

Ответы [ 2 ]

0 голосов
/ 25 января 2019
sed '/BOND/s/"$/ primary=eth0"/'
  • используйте одинарные кавычки, строка внутри двойных кавычек должна быть интерпретирована оболочкой, прежде чем она будет передана в sed, что часто приводит к ошибкам
  • , так как вам нужно вставить что-то перед концом строки, вам нужно добавить это условие перед применением $ привязки - в данном случае "

Если перед привязкой имеется нетривиальная строка или регулярное выражение, вы можете использовать &, чтобы вернуть эту совпадающую строку в разделе замены вместо дублирования текста

sed '/BOND/s/"$/ primary=eth0&/' ip.txt

Для редактирования на месте см. Флаг sed-in-place, который работает как на Mac (BSD), так и на Linux

0 голосов
/ 25 января 2019

Спасибо за добавление ваших усилий в вашем посте.Не могли бы вы попробовать следующее.

awk '/BOND/{sub(/\"$/,"  primary=eth0&")} 1' Input_file

Если вы хотите сохранить вывод в сам файл Input_file, попробуйте:

awk '/BOND/{sub(/\"$/,"  primary=eth0&")} 1' Input_file > temp && mv temp Input_file

С sed:

sed '/BOND/s/\"$/  primary=eth0&/'  Input_file

Пожалуйста, используйте либо sed -i (чтобы сохранить вывод в самом файле Input_file) ИЛИ используйте sed -i.bak (чтобы сохранить вывод в самом файле Input_file с резервным копированием существующего файла Input_file).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...