这是我的命令:
sed -i -E 's/(<Connector port=)([a-zA-Z0-9"-])+/\1"VALUE10"/g' server.xm
当我执行此cAll事件已被替换为文件。
如何使用sed只替换我文件中的第一个匹配项?
答案 0 :(得分:1)
只需使用awk。使用GNU awk进行gensub()和就地编辑:
awk -i inplace '!f{$0=gensub(/(<Connector port=)[[:alnum:]"-]+/,"\\1\"VALUE10\"","g"); f=1} 1' server.xm
答案 1 :(得分:0)
查找文件中的第一个匹配项:
first=$( egrep -n 'Connector port=[a-zA-Z0-9"-]' server.xm | head -1 | cut -d: -f1 )
然后,在该行上替换:
sed -i -E "${first}s/(<Connector port=)([a-zA-Z0-9\"-])+/\1\"VALUE10\"/g" server.xm