使用 sed 在匹配后插入一行

使用 sed 在匹配后插入一行

我想在此行后插入一个新行:

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

您能指导我如何使用该sed命令实现这一点吗?

答案1

Brian Z 的评论是个好建议。事实上,使用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

相关内容