为以另一个模式开头的每一行替换一个模式

Posted

技术标签:

【中文标题】为以另一个模式开头的每一行替换一个模式【英文标题】:Replace a pattern for every line which starts with another pattern 【发布时间】:2021-07-21 11:51:31 【问题描述】:

在下面的示例中,我必须将每行以 SEG+BB 开头的 AB 替换为 CD

赛格+AA+AB SEG+BB+6789+AB12345 赛格+BB+6789+AB12345 SEG+BB+6789+AB12345 赛格+BB+6789+AB12345 SEG+BB+6789+AB12345

【问题讨论】:

欢迎来到 SO,您能否在您的问题中添加 3 个简单的内容。第 1- 清除输入示例,第 2- 清除输出示例和第 3- 您尝试过的命令/代码,谢谢。 @RavinderSingh13 我收到以下错误您的帖子似乎包含未正确格式化为代码的代码。请使用代码工具栏按钮或 CTRL+K 键盘快捷键将所有代码缩进 4 个空格。如需更多编辑帮助,请单击 [?] 工具栏图标。 @RavinderSingh13 在下面的示例中,对于以 SEG+BB INPUT SEG+AA+AB SEG+BB+6789+AB12345 SEG+BB+6789+AB12345 开头的每一行,我必须将 AB 替换为 CD SEG+BB+6789+AB12345 SEG+BB+6789+AB12345 SEG+BB+6789+AB12345 输出 SEG+AA+AB SEG+BB+6789+CD12345 SEG+BB+6789+CD12345 SEG+BB+6789+CD12345 SEG+ BB+6789+CD12345 SEG+BB+6789+CD12345 ` sed 's/^(SEG+BB;([^;]+;)5)AB;/\CD;/' ` I 【参考方案1】:

对于以 SEG+BB 开头的每一行,我必须用 CD 替换 AB

这段代码完成了工作:

sed '/^SEG+BB/  s/AB/CD/g '

'/^SEG+BB/ ' => 对于所有以“SEG+BB”开头的行,在括号内做代码

【讨论】:

以上是关于为以另一个模式开头的每一行替换一个模式的主要内容,如果未能解决你的问题,请参考以下文章

在 Notepad++ 的每一行末尾添加一个字符 )

sed 中如何替换换行符

替换从字符开始并以另一个字符结束的文本文件中的子字符串

仅在包含另一个模式的另一行之后的第一次出现中替换包含模式的行

VIM 编辑器

获取 R 中 rpart/ctree 包的每一行预测数据集的决策树规则/路径模式