2

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

例子:

 string123
 example545

输出:

string
example
4

5 回答 5

9

无需外部工具,只需参数扩展和扩展通配符:

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

扩展的全局模式是“一个或多个这个”, “一个或多个数字”也是如此。+(pattern)+([[:digit:]])

扩展的意思是“从.${var%%pattern}patternvar

于 2018-01-07T02:14:44.013 回答
5

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

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

而且只有字符串的结尾:

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

where$表示行的结束。

于 2018-01-06T19:52:11.310 回答
2
awk '{sub(/[0-9]+$/,"")}1' file

string
example
于 2018-01-07T02:09:23.340 回答
2

用 grep

echo S1tring123 | grep -o '.*[^0-9]'
于 2018-01-06T22:03:33.727 回答
1

不确定是否完全理解您的要求,但请尝试:

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

也许:

sed 's/[0-9]*\([^0-9]*\)$/\1/' file
于 2018-01-06T20:41:41.383 回答