使用以扩展名

时间:2016-03-23 19:26:54

标签: bash shell sed

我需要一些关于如何实现这一目标的建议:

我需要使用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中使用“*”但是它不起作用

2 个答案:

答案 0 :(得分:1)

使用GNU sed:

sed 's|[^/]*\.ear|replaced.ear|' file

sed 's|[^/]*\(\.ear\)|replaced\1|' file

如果您要“就地”修改文件,请使用sed的选项-i

请参阅:The Stack Overflow Regular Expressions FAQ

答案 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,因此要指定文字点,您必须使用反斜杠转义。