Bash unixshell子字符串?

Bash unixshell子字符串?,bash,shell,unix,ksh,Bash,Shell,Unix,Ksh,我想提取子字符串,直到最后一个数字结束 例如: 在字符串“abcd123z”中,我希望输出为“abcd123” 在字符串“abcdef123gh01yz”中,我希望输出为“abcdef123gh01” 在字符串“abcd123”中,我希望输出为“abcd123” 如何在unix shell中执行此操作?尝试此sed命令 sed 's/^\(.*[0-9]\).*$/\1/g' file 例如: $ echo 'abcdef123gh01yz' | sed 's/^\(.*[0-9]\).*$/

我想提取子字符串,直到最后一个数字结束

例如:

在字符串“abcd123z”中,我希望输出为“abcd123”

在字符串“abcdef123gh01yz”中,我希望输出为“abcdef123gh01”

在字符串“abcd123”中,我希望输出为“abcd123”

如何在unix shell中执行此操作?

尝试此sed命令

sed 's/^\(.*[0-9]\).*$/\1/g' file
例如:

$ echo 'abcdef123gh01yz' | sed 's/^\(.*[0-9]\).*$/\1/g'
abcdef123gh01
试试这个sed命令

sed 's/^\(.*[0-9]\).*$/\1/g' file
例如:

$ echo 'abcdef123gh01yz' | sed 's/^\(.*[0-9]\).*$/\1/g'
abcdef123gh01

可以在BASH regex中执行此操作:

str='abcdef123gh01yz'
[[ "$str" =~ ^(.*[[:digit:]]) ]] && echo "${BASH_REMATCH[1]}"
abcdef123gh01

可以在BASH regex中执行此操作:

str='abcdef123gh01yz'
[[ "$str" =~ ^(.*[[:digit:]]) ]] && echo "${BASH_REMATCH[1]}"
abcdef123gh01

是的,我清楚地提到了
BASH
,因为OP用
BASH
标记了问题,他标记了BASH和kshYes,我清楚地提到了
BASH
,因为OP用
BASH
标记了问题,他标记了BASH和ksh