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 文件中的多个值 [重复]