如何替换最后一个“.”之后的任何字符串到txt
例如
filter.bash
sum.sh
portG.py
run.doK.ksh
预期成绩
filter.txt
sum.txt
portG.txt
run.doK.txt
答案1
sed 's/[^.]*$/txt/'
或者仅对包含至少一个的行执行此操作.
(不更改myfile
为txt
):
sed 's/\.[^.]*$/.txt/'
还要避免替换.bashrc
为.txt
:
sed 's/\(..*\.\).*/\1txt/'
(这次我们靠贪婪来替.*
换掉后面的部分最后的 .
)。
还要避免替换foo.d/myfile
为foo.txt
:
sed 's|\([^/]\.\)[^./]*$|\1txt|'
还要向.txt
没有任何扩展名的文件添加扩展名(包括更改.bashrc
为.bashrc.txt
但不触及空行或以 结尾的行/
):
sed 's|\([^/]\)\.[^./]*$|\1|;s|[^/]$|&.txt|'