Удаление последнего символа одним словом, но только если символ присутствует – в bash

Как удалить последний символ, только если он есть?

вход:

 OpenOffice.org/m
 openOffice.org/ozm
 Чел.
 Pfg.
 Фил.
 Профессор
 соответственно
 Roonstr./m
 roonstr./ozm

желаемый выход:

 OpenOffice.org
 openOffice.org
 Pers
 Pfg
 Фил
 профессор
 соответственно
 Roonstr
 roonstr

Я до сих пор понял, что осталась только точка, но, к сожалению, последняя команда sed удаляет также букву g : $ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//' $ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'

Вам просто нужно избежать точки в команде sed и все будет хорошо. Как это:

 sed 's/\.$//' 

Потому что в случае, если вы этого не избежите, .$ будет соответствовать любому символу в конце строки.

Также вы можете поместить все ваши sed + grep + в один sed :

 sed 's=/[^/]*$==;s/\.$//' filename