假设我有一个包含很多行的文本文件,其中之一是:
<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/