unix shell子字符串?

时间:2014-07-10 11:52:17

标签: bash shell unix ksh

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

例如:

在字符串" abcd123z" ,我希望输出为" abcd123"

在字符串" abcdef123gh01yz" ,我希望输出为" abcdef123gh01"

在字符串" abcd123" ,我希望输出为" abcd123"

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

3 个答案:

答案 0 :(得分:2)

尝试使用此sed命令,

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

示例:

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

答案 1 :(得分:1)

您可以在BASH正则表达式中执行此操作:

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

答案 2 :(得分:1)

tmp="${str##*[0-9]}"     # cut off all up to last digit, keep intermediate
echo "${str%$tmp}"        #  remove intermediate from end of string