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

  • 本文关键字:一个 字符串 另一个 替换 bash sed
  • 更新时间 :
  • 英文 :


使用sed,尝试实现如下目标。

现有文本:值 7

新文本:值 2

这里的诀窍是,我尝试用值 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' *

它仍然仅替换值,而不替换数字。我需要将所有"值*"替换为"值 2">

Value *匹配Value后跟零个或多个空格。您应该改用Value [0-9]*。喜欢:

sed -i 's/Value [0-9]*/Value 2/g' *

或者,您可以将Value放在捕获组中以避免重写它:

sed -i 's/(Value )[0-9]*/12/g' *

这可能对你有用(GNU sed):

sed -E 's/<(Value [^,]+, )*(Value) [^,]*/2 2/g' file

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

相关内容

最新更新