Удалить цифры с конца строки

Я хочу удалить цифры из конца строки.

Пример:

 string123
 example545

Выход:

string
example

5 ответов

Решение

Если у вас нет других цифр в строке, которую вы можете сделать:

echo string123 | sed 's/[0-9]//g'
string

И только конец строки:

echo S1tring123 | sed 's/[0-9]\+$//'
S1tring

куда $ указывает на конец строки.

Без внешних инструментов, только расширение параметров и расширенная глобализация:

$ shopt -s extglob
$ var=string123
$ echo "${var%%+([[:digit:]])}"
string
$ var=example545
$ echo "${var%%+([[:digit:]])}"
example

+(pattern) расширенный шаблон глобуса "один или несколько из этого", так +([[:digit:]]) это "одна или несколько цифр".

${var%%pattern} расширение означает "удалить максимально возможное совпадение pattern с конца var,

С grep

echo S1tring123 | grep -o '.*[^0-9]'
awk '{sub(/[0-9]+$/,"")}1' file

string
example

Не уверен, что полностью понимаю ваши требования, но попробуйте:

sed 's/[0-9]*\([^[:alnum:]]*\)$/\1/' file

или возможно:

sed 's/[0-9]*\([^0-9]*\)$/\1/' file
Другие вопросы по тегам