Linux

用 txt 字元串替換最後一個點之後的任何字元串

  • October 25, 2018

如何替換最後一個“。”之後的任何字元串 到txt

例如

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

預期成績

filter.txt
sum.txt
portG.txt
run.doK.txt
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|'

引用自:https://unix.stackexchange.com/questions/477730