将一个字符串后跟一个数字值替换为另一个字符串和一个新的数字值

时间:2019-07-13 05:36:45

标签: bash sed

使用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”

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

这会在一行中全局地将值列表或单个值替换为单个值。