Como remover o último caractere apenas se estiver lá?
entrada:
OpenOffice.org/m openOffice.org/ozm Pers. Pfg. phil. Prof. resp. Roonstr./m roonstr./ozm
saída desejada:
OpenOffice.org openOffice.org Pers Pfg phil Prof resp Roonstr roonstr
Entendi até agora que resta apenas o ponto, mas infelizmente o último comando sed também remove a letra g
:
$ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'
text-processing
grep
sed
removeelastdotonlyifitsthere
fonte
fonte
sed -n '/\./{s=/[^/]*$==;s/\.$//;p}
. Enfimgrep
+sed
funcionará muito mais do que apenas umsed
.sed 's/[./]\+[^./]*$//'
Removendo um caractere somente se houver, existe exatamente a descrição das expansões de parâmetro.
O ponto não é especial neste caso (um ponto é especial em uma regex).
O outro padrão pode ser removido com
%/*
:Para remover os dois:
Obviamente, para trabalhar com um arquivo de origem, é mais rápido usar o sed no arquivo.
Lembre-se de citar o ponto (para combiná-lo literalmente, caso contrário, significa: qualquer caractere).
fonte
Apenas altere levemente sua expressão regular: para escapar do
.
E você não precisagrep
fonte