从字符串末尾删除数字
Remove digits from end of string
我想删除字符串末尾的数字。
示例:
string123
example545
输出:
string
example
如果您在字符串的其他任何地方都没有其他数字,您可以这样做:
echo string123 | sed 's/[0-9]//g'
string
而且只有字符串的结尾:
echo S1tring123 | sed 's/[0-9]\+$//'
S1tring
其中$
表示行尾。
不确定是否完全理解您的要求,但请尝试:
sed 's/[0-9]*\([^[:alnum:]]*\)$//' file
或者也许:
sed 's/[0-9]*\([^0-9]*\)$//' file
用 grep
echo S1tring123 | grep -o '.*[^0-9]'
awk '{sub(/[0-9]+$/,"")}1' file
string
example
无需外部工具,只需 parameter expansion 和扩展的 globbing:
$ shopt -s extglob
$ var=string123
$ echo "${var%%+([[:digit:]])}"
string
$ var=example545
$ echo "${var%%+([[:digit:]])}"
example
+(<i>模式</i>)
扩展的glob模式是"one or more of this",所以+([[:digit:]])
是"one or more digits".
${var%%<i>pattern</i>}
扩展意味着“删除最长可能的匹配pattern
从 var
.
结束
我想删除字符串末尾的数字。
示例:
string123
example545
输出:
string
example
如果您在字符串的其他任何地方都没有其他数字,您可以这样做:
echo string123 | sed 's/[0-9]//g'
string
而且只有字符串的结尾:
echo S1tring123 | sed 's/[0-9]\+$//'
S1tring
其中$
表示行尾。
不确定是否完全理解您的要求,但请尝试:
sed 's/[0-9]*\([^[:alnum:]]*\)$//' file
或者也许:
sed 's/[0-9]*\([^0-9]*\)$//' file
用 grep
echo S1tring123 | grep -o '.*[^0-9]'
awk '{sub(/[0-9]+$/,"")}1' file
string
example
无需外部工具,只需 parameter expansion 和扩展的 globbing:
$ shopt -s extglob
$ var=string123
$ echo "${var%%+([[:digit:]])}"
string
$ var=example545
$ echo "${var%%+([[:digit:]])}"
example
+(<i>模式</i>)
扩展的glob模式是"one or more of this",所以+([[:digit:]])
是"one or more digits".
${var%%<i>pattern</i>}
扩展意味着“删除最长可能的匹配pattern
从 var
.