SED 如何用正则表达式替换 Line

Posted

技术标签:

【中文标题】SED 如何用正则表达式替换 Line【英文标题】:SED how to replace Line with Regex 【发布时间】:2021-01-01 03:38:13 【问题描述】:

快速提问

我有这行:

regexp: \[apm,(.*)\]apm-(.*)\.pivotal

我也想成为那样:

regexp: \[apm,(.*)\]app-metrics(.*)\.pivotal

我正在使用但它不起作用的 sed 命令是:

sed -i -E 's/regexp: \\[apm,(.\*)\\\]apm-(.\*)\\.pivotal/regexp: \\[apm,(.\*)\\\]app-metrics(.\*)\\.pivotal/g' FILE_THAT_CONTAINS_THE_LINE

【问题讨论】:

你应该edit你的问题并解释在这种情况下“它不工作”是什么意思。显示错误的输出或错误消息。 这不是“怀疑”,而是“疑问”。 “怀疑”意味着你不相信某事。在一些将英语作为第二语言学习的国家,这是一个相当普遍的误解。 【参考方案1】:

尽量简化

sed '/regexp:.*apm.*apm-.*pivotal/s/apm-/&metrics/' FILE...

【讨论】:

我做了一些不同的事情,交换分隔符sed -r 's|\]apm|&-metrics-|g' file【参考方案2】:
sed -i -E 's/regexp: \\\[apm,\(\.\*\)\\\]apm-\(.\*\)\\\.pivotal/regexp: \\[apm,(.*)\\]app-metrics(.*)\\.pivotal/' file.txt

你缺少一些转义

【讨论】:

以上是关于SED 如何用正则表达式替换 Line的主要内容,如果未能解决你的问题,请参考以下文章

如何用 sed 替换缩小的 javascript 文件中的多个值 [重复]

如何用正则表达式替换字符串

如何用正则表达式替换多个匹配项/组?

如何用元组列表替换列表中正则表达式匹配的模式?

如何用另一个文件中的组(已知正则表达式)替换一个文件中的空白空间?

如何用模式(正则表达式)替换字符串的一部分在数据框中抛出行