使用sed,尝试实现如下所示的功能。
现有文字:值7
新文本:值2
这里的窍门是,我试图将目录中的所有文件替换为多个值(例如:值7,值6,值27,值108 ...)。
这是我已经尝试过的:
sed -i 's/Value */Value 2/g' *
但这确实仅替换了值(例如:将值6替换为值26)。将“值”替换为“值2”
到目前为止已尝试:
sed -i 's/Value */Value 2/g' *
sed -i 's/Value '*'/Value 2/g' *
它仍然仅替换Value而不替换数字。我需要将所有“值*”替换为“值2”
答案 0 :(得分:1)
Value *
匹配Value
,后跟零个或多个空格。您应该改用Value [0-9]*
。喜欢:
sed -i 's/Value [0-9]*/Value 2/g' *
或者您可以将Value
放在捕获组中以避免重写它:
sed -i 's/\(Value \)[0-9]*/\12/g' *
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed -E 's/\<(Value [^,]+, )*(Value) [^,]*/\2 2/g' file
这会在一行中全局地将值列表或单个值替换为单个值。