从字符串末尾删除数字

jak*_*ing 1 bash awk grep gnuwin32

我想从字符串末尾删除数字.

例:

 string123
 example545
Run Code Online (Sandbox Code Playgroud)

输出:

string
example
Run Code Online (Sandbox Code Playgroud)

Ben*_* W. 7

没有外部工具,只需参数扩展和扩展通配:

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

的扩展glob模式是"一个或多个的该",所以是"一个或多个数字".+(pattern)+([[:digit:]])

该膨胀装置"删除的最长可能的匹配从的末端.${var%%pattern}patternvar

  • @休伯特`shopt -u extglob` (2认同)

Tho*_*yth 5

如果字符串中的其他任何地方都没有其他数字,则可以执行以下操作:

echo string123 | sed 's/[0-9]//g'
string
Run Code Online (Sandbox Code Playgroud)

并且只有字符串的结尾:

echo S1tring123 | sed 's/[0-9]\+$//'
S1tring
Run Code Online (Sandbox Code Playgroud)

where$表示行尾。

  • 那么第一个很重要,因为它只会删除第一个数字:) (2认同)