我想删除字符串末尾的数字。
示例:
string123
example545
输出:
string
example
答案 0 :(得分:7)
没有外部工具,只需parameter expansion和扩展的globbing:
$ shopt -s extglob
$ var=string123
$ echo "${var%%+([[:digit:]])}"
string
$ var=example545
$ echo "${var%%+([[:digit:]])}"
example
+(pattern)
扩展的glob模式是“其中的一个或多个”,因此+([[:digit:]])
是“一个或多个数字”。
${var%%pattern}
扩展意味着“从pattern
的末尾删除 var
的最长匹配。
答案 1 :(得分:3)
如果您可以在字符串中的任何其他位置没有其他数字:
echo string123 | sed 's/[0-9]//g'
string
只有字符串的结尾:
echo S1tring123 | sed 's/[0-9]\+$//'
S1tring
$
表示该行的结尾。
答案 2 :(得分:2)
使用grep
echo S1tring123 | grep -o '.*[^0-9]'
答案 3 :(得分:1)
不确定完全理解您的要求,但请尝试:
sed 's/[0-9]*\([^[:alnum:]]*\)$/\1/' file
或者也许:
sed 's/[0-9]*\([^0-9]*\)$/\1/' file
答案 4 :(得分:1)
awk '{sub(/[0-9]+$/,"")}1' file
string
example