将最后一个点之后的任何字符串替换为 txt 字符串

将最后一个点之后的任何字符串替换为 txt 字符串

如何替换最后一个“.”之后的任何字符串到txt

例如

filter.bash
sum.sh
portG.py
run.doK.ksh

预期成绩

filter.txt
sum.txt
portG.txt
run.doK.txt

答案1

sed 's/[^.]*$/txt/'

或者仅对包含至少一个的行执行此操作.(不更改myfiletxt):

sed 's/\.[^.]*$/.txt/'

还要避免替换.bashrc.txt

sed 's/\(..*\.\).*/\1txt/'

(这次我们靠贪婪来替.*换掉后面的部分最后的 .)。

还要避免替换foo.d/myfilefoo.txt

sed 's|\([^/]\.\)[^./]*$|\1txt|'

还要向.txt没有任何扩展名的文件添加扩展名(包括更改.bashrc.bashrc.txt但不触及空行或以 结尾的行/):

sed 's|\([^/]\)\.[^./]*$|\1|;s|[^/]$|&.txt|'

相关内容