我有一个字符串为log.txt的文件,并且文件内有多行
line 1 text
line2/random/string/version:0.0.30
line 3 randome stuff
http://someurl:8550/
因此,当前我使用sed
查找并替换0.0.30为新值,如0.0.31
sed -i s/0.0.30/0.0.31/g log.txt
问题是我需要知道先前的值。
是否有办法始终从文件中的字符串中删除0.0.30并将其替换为新值?
可能是indexof或子字符串。
答案 0 :(得分:2)
您可以使用正则表达式定义来匹配0.0.30
并将其替换为0.0.31
,如下所示。 --posix
标志用于确保不应用任何GNU方言,并使用纯BRE(基本正则表达式)库。由于\{2\}
是一种BRE语法,可以匹配2次出现的数字。
sed -i --posix 's/[[:digit:]]\.[[:digit:]]\.[[:digit:]]\{2\}/0.0.31/' file
请参阅正则表达式here的说明。