我想提取子字符串,直到最後一個數字結束。unix shell子字符串?
例如:
在字符串 「abcd123z」,我想輸出是 「abcd123」
在字符串 「abcdef123gh01yz」,我想輸出是 「abcdef123gh01」
在字符串「abcd123」中,我希望輸出爲「abcd123」
如何在unix shell中執行此操作?
我想提取子字符串,直到最後一個數字結束。unix shell子字符串?
例如:
在字符串 「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
您可以在BASH正則表達式做到這一點:
str='abcdef123gh01yz'
[[ "$str" =~ ^(.*[[:digit:]]) ]] && echo "${BASH_REMATCH[1]}"
abcdef123gh01
tmp="${str##*[0-9]}" # cut off all up to last digit, keep intermediate
echo "${str%$tmp}" # remove intermediate from end of string
這不會在KSH – hek2mgl
工作是我清楚地提到了BASH,因爲它自帶OP標籤'BASH'的問題 – anubhava
他標記了bash *和* ksh – hek2mgl