Удалить цифры с конца строки
Я хочу удалить цифры из конца строки.
Пример:
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
,
Не уверен, что полностью понимаю ваши требования, но попробуйте:
sed 's/[0-9]*\([^[:alnum:]]*\)$/\1/' file
или возможно:
sed 's/[0-9]*\([^0-9]*\)$/\1/' file