如何使用 sed 将文件列表中的文件名替换为 .ear?

如何使用 sed 将文件列表中的文件名替换为 .ear?

我有一个文件,其内容如下:

/appl/as/var/spool/ears/mps/ear1.ear
...

我想将 only 的名称替换ear1.earear2.ear,并且我正在使用以下sed命令,但没有运气:

sed -i.bak s/*.ear/ear2.ear/g earlist.mps

earlist.mps文件名在哪里

我努力了:

sed -i.bak s/.*.ear/ear2.ear/g earlist.mps

但这会将整个文件替换为ear2.ear.

答案1

sed

sed 's|/[^/]\+\.ear$|/ear2.ear|' file
  • 它搜索以.ear($匹配行尾) 结尾的行。文件名可以是除/:之外的任何名称[^/]\+。表示+一个字符(不是/)可以重复 1 次或多次。
  • 然后将匹配项替换为/ear2.ear

相关内容