我在文件中有以下字符串:
<Product Id="*" Name="NAME" Language="1033" Version="1.2.3.4" Manufacturer="Manufacturer" UpgradeCode="12345">
我想使用带有新数字的bash命令(sed?)替换版本值中的最后一个数字字段(即&#34; 4&#34;)。我希望能够将此更改为我通过的任何其他号码。我尝试使用:
sed -i -e "s#Version=\"\([0-9]\)\.\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)\"#Version=\"\1\.\2\.\3\.10\"#g" <filename>
但这没有用。
答案 0 :(得分:3)
尝试这个sed行:
修正:
000000
以上行将最后sed -r 's/(.*Version="[^"]*[.])[^."]+(".*)/\1foo\2/ file
更改为4
。您只需将foo
更改为所需的值。
答案 1 :(得分:1)
如果你有gnu-awk,你可以这样做:
awk -v n=8 '{print gensub(/(Version="[0-9.]+\.)[0-9]+"/, "\\1" n "\"", "1")}' file
<Product Id="*" Name="NAME" Language="1033" Version="1.2.3.8" Manufacturer="Manufacturer" UpgradeCode="12345">
n
是您要在文件中更新的版本#。
答案 2 :(得分:1)
假设:
[[:alnum:]]
课程,而不仅仅[[:digit:]]
允许使用 beta 等版本中的字母,... sed 's/\([[:blank:]]Version="[^"]*[.]\)[[:alnum:]]*"/\1YourNumber"/' YourFile