我想提取子字符串,直到最后一个数字结束。
例如:
在字符串" abcd123z" ,我希望输出为" abcd123"
在字符串" abcdef123gh01yz" ,我希望输出为" abcdef123gh01"
在字符串" abcd123" ,我希望输出为" abcd123"
如何在unix shell中执行此操作?
答案 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