我想从字符串末尾删除数字。
例子:
string123
example545
输出:
string
example
无需外部工具,只需参数扩展和扩展通配符:
$ shopt -s extglob
$ var=string123
$ echo "${var%%+([[:digit:]])}"
string
$ var=example545
$ echo "${var%%+([[:digit:]])}"
example
扩展的全局模式是“一个或多个这个”, “一个或多个数字”也是如此。+(pattern)
+([[:digit:]])
扩展的意思是“从.${var%%pattern}
pattern
var
如果您在字符串中的其他任何地方没有其他数字,您可以执行以下操作:
echo string123 | sed 's/[0-9]//g'
string
而且只有字符串的结尾:
echo S1tring123 | sed 's/[0-9]\+$//'
S1tring
where$
表示行的结束。
awk '{sub(/[0-9]+$/,"")}1' file
string
example
用 grep
echo S1tring123 | grep -o '.*[^0-9]'
不确定是否完全理解您的要求,但请尝试:
sed 's/[0-9]*\([^[:alnum:]]*\)$/\1/' file
也许:
sed 's/[0-9]*\([^0-9]*\)$/\1/' file