regex - sed 正则表达式替换为引号

标签 regex sed

假设我有一个包含很多行的文本文件,其中之一是:

  <property name="HTTP_PORT" value="8080"></property>

我想用 sed 把它改成这样:

  <property name="HTTP_PORT" value="80"></property>

我该怎么做?我已经尝试了很多事情,包括这些:

sed 's/^\(.+\)value=\"8080\"\(.+\)$/\1value=\"80\"\2/g' config.xml
sed 's/^\(.+\)value="8080"\(.+\)$/\1value="80"\2/g' config.xml
sed 's/^\(.+\)8080(.+\)$/\180\2/g' config.xml
sed 's/^\(.+\)\"8080\"\(.+\)$/\1\"80\"\2/g' config.xml
sed 's/^\(.+\)"8080"\(.+\)$/\1"80"\2/g' config.xml

但都无济于事。输入和输出始终相同。

最佳答案

直接翻译你想要的怎么样:

sed 's|<property name="HTTP_PORT" value="8080"></property>|<property name="HTTP_PORT" value="80"></property>|g'

它不像你我能找到的那样“聪明”的解决方案,但它就像它们来的一样简单,而且当你正在寻找静态字符串时,它就是你所需要的。

关于regex - sed 正则表达式替换为引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076193/

相关文章:

javascript - 用于多个 DNS 服务器的 JS 正则表达式

python - 如何从一个大文件中随机删除多行?

regex - 我可以在 sed 中提到从不同模式到其他模式的反向引用吗

linux - 将文件的一列与另一个文件匹配,并使用 bash 替换不同的列

regex - PowerShell 从脚本中删除所有注释

javascript - 正则表达式说明

json - 如何使用 Bash 删除 json 文件中的最后一个逗号?

linux - bash 将奇数日期格式转换为 linux 日期识别的更有效方法

javascript - Either|Or 正则表达式的一部分,用于匹配两种可能性

c# - 如果后面跟着任何字母,如何使用正则表达式删除单独的 1?