Bellow是这行,我保存在test.txt文件中
fromuser=abcd touser=efgh file=foo_v1.0.0_2017.03.22.dmp log=foo_v1.0.0_2017.03.22.log
我需要从文件中替换1.0.0
并记录两者,正如您所看到的名称" foo"是相同的,每次都会改变版本。
期望的输出:
fromuser=abcd touser=efgh file=foo_version.2017.03.22.dmp log=foo_version.2017.03.22.log
答案 0 :(得分:0)
有了它,似乎没关系。确保为sed提供-r
或-E
命令行开关以启用扩展的正则表达式支持。
$ a="fromuser=abcd touser=efgh file=foo_v1.0.0_2017.03.22.dmp log=foo_v1.0.0_2017.03.22.log"
$ sed -r 's/(_v[0-9]*\.[0-9]*\.[0-9]*_)/_version\./g' <<<"$a"
#Output
fromuser=abcd touser=efgh file=foo_version.2017.03.22.dmp log=foo_version.2017.03.22.log
$ b="fromuser=abcd touser=efgh file=foo_v122.10.100_2019.11.99.dmp log=foo_v133.530.30001_201.3.0.log"
$ sed -r 's/(_v[0-9]*\.[0-9]*\.[0-9]*_)/_version\./g' <<<"$b"
#Output
fromuser=abcd touser=efgh file=foo_version.2019.11.99.dmp log=foo_version.201.3.0.log
如果出于某种原因,您的sed版本无法正常工作,您也可以使用perl
只需将sed -r
替换为perl -pe
,保持其余代码相同,并且可以在所有配备perl的系统中以提供所需结果的相同方式工作。