我需要在字符串中用value
替换new_value
key:value
key: value
key: value
获得
key:new_value
key: new_value
key: new_value
:
之后的空格数是任意的。要匹配的正则表达式为key: *value
。
如何在这样的字符串中用value
替换new_value
并保留sed的空格数?
为明确起见,由于不同的键/值,key1:value
或key:value1
不匹配,因此此类字符串不会更改。
答案 0 :(得分:2)
尝试-
sed 's/^\(key: *\)value/\1new_vale/' file
答案 1 :(得分:0)
您可以使用此sed
来匹配所有情况:
sed -E 's/^([[:blank:]]*key[[:blank:]]*:[[:blank:]]*)value([[:blank:]]|$)/\1new_value/' file
key:new_value
key: new_value
key: new_value
这允许在0个或多个空格:
key
开始之前key
和:
之间:
和值之间value
之后,在结束之后[[:blank:]]
匹配空格或制表符