Как убрать последний символ только если он там есть?
вход:
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/.$//'
text-processing
grep
sed
removelastdotonlyifitsthere
источник
источник
sed -n '/\./{s=/[^/]*$==;s/\.$//;p}
. В любом случаеgrep
+sed
будет работать намного дольше, чем одинsed
.sed 's/[./]\+[^./]*$//'
Удаление символа только в том случае, если оно есть, есть в точности описание расширения параметров.
Точка не является особенной в этом случае (точка является особенной в регулярном выражении).
Другой шаблон можно удалить с помощью
%/*
:Чтобы удалить оба:
Конечно, для работы с исходным файлом быстрее использовать sed для этого файла.
Только не забудьте заключить в кавычки точку (чтобы соответствовать ей буквально, иначе это означает: любой символ).
источник
Просто слегка поменяйте свое регулярное выражение: убегать
.
И не нужноgrep
источник