我需要一些关于如何实现这一目标的建议:
我需要使用shell脚本替换文件中的文本,我需要替换的文本以.ear结尾,例如下面:
/home/export/files/list/aa_bb_cc.ear
shell脚本应该用aa_bb_cc.ear
替换replaced.ear
。
替换之后的那一行应该是:
/home/export/files/list/replaced.ear
我在网上看过这个,并且了解了sed命令。我遇到的问题是,我手边不知道要替换的文本是什么,也就是说,我知道要替换的文本将是* .ear(试图匹配aa_bb_cc.ear)
现在,我该怎么做?我尝试在sed中使用“*”但是它不起作用
答案 0 :(得分:1)
使用GNU sed:
sed 's|[^/]*\.ear|replaced.ear|' file
或
sed 's|[^/]*\(\.ear\)|replaced\1|' file
如果您要“就地”修改文件,请使用sed的选项-i
。
答案 1 :(得分:1)
$ echo /home/export/files/list/aa_bb_cc.ear | sed 's/[^/]*\.ear/xxx.ear/'
/home/export/files/list/xxx.ear
由于正则表达式匹配是贪婪的,您需要指定匹配非斜杠char。 Dot匹配任何char,因此要指定文字点,您必须使用反斜杠转义。