Substitua qualquer string após o último ponto com string txt

0

como substituir qualquer string após o último "." para txt

por exemplo

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

resultados esperados

filter.txt
sum.txt
portG.txt
run.doK.txt
    
por yael 25.10.2018 / 13:54

1 resposta

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

Ou apenas para linhas que contenham pelo menos um . (não altere myfile para txt ):

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

Para evitar também a substituição de .bashrc por .txt :

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

(dessa vez, dependemos da ganância de .* para substituir a parte depois do último . ).

Para evitar também a substituição de foo.d/myfile por foo.txt :

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

Para adicionar também uma extensão .txt aos arquivos que não têm nenhuma extensão (incluindo a alteração de .bashrc a .bashrc.txt , mas não a tocar linhas vazias nem as linhas que terminam em / ):

sed 's|\([^/]\)\.[^./]*$||;s|[^/]$|&.txt|'
    
por 25.10.2018 / 14:07