Вставить строку после совпадения, используя sed

Я хочу вставить новую строку после этой строки:

set_config_object("m_lin_1_pad_agent*","io_agent_config",m_lin_1_pad_agent_cfg,0);

Подскажите, пожалуйста, как мне этого добиться, используя sed [1188618. ] команда?

0
задан 24 July 2020 в 23:09

1 ответ

Комментарий Брайана З является хорошим предложением. Действительно, используя команду a в sed добавит строку после совпадения.

Однако, если вы непосредственно используете строку в своем вопросе в качестве совпадающей строки, вы найдете что ничего не случится. Проблема заключается в символе * внутри вашей строки, который должен быть экранирован, поскольку sed использует этот символ для соответствия регулярному выражению. В sed вы можете экранировать персонажа, используя обратную косую черту ( \ ) перед ним. Вы можете найти дополнительную информацию о символах, которые должны быть экранированы в этом вопросе U & L .

Итак, команду sed необходимо выполнить, чтобы добавить строку newstring в файле с именем file. txt после сопоставления вашей строки (обратите внимание на экранированный * ):

sed -i -e '/set_config_object("m_lin_1_pad_agent\*","io_agent_config",m_lin_1_pad_agent_cfg,0);/ a newstring' file.txt

В приведенной выше команде -i используется для изменения файла на месте. Если вы хотите предварительно просмотреть изменения и убедиться, что команда работает должным образом, выполните команду без флага -i .

1
ответ дан 30 July 2020 в 22:03

Другие вопросы по тегам:

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