我有一個值 s-pub-comtec-sap-product-app-1.0.0-mule-application.war 我需要從上面的字串中獲取值 1.0.0。
我用過
echo "s-pub-comtec-sap-product-app-1.0.0-mule-application.war" | awk -F '-' '{ print $7 }'
它奏效了。
但現在的問題是有時該值將是 s-pub-comtec-sap-app-1.0.0-mule-application.war,在這種情況下,我的代碼不會獲取 1.0.0 值。
您能否建議哪個命令可以實作這種情況?
我給出了以下命令,這在所有情況下都不起作用。
echo "s-pub-comtec-sap-product-app-1.0.0-mule-application.war" | awk -F '-' '{ print $7 }'
uj5u.com熱心網友回復:
如果您要提取的子字串僅由數字和點組成,前面有一個-字符,我會建議一個sed解決方案:
s='s-pub-comtec-sap-app-1.0.0-mule-application.war'
echo "$s" | sed -E 's/.*-([0-9](\.[0-9] ) ).*/\1/'
出于同樣的原因,awk解決方案可能是:
echo "$s" |
awk 'match($0,/-[0-9](\.[0-9] ) /) { print substr($0,RSTART 1,RLENGTH-1) }'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523624.html
標籤:壳Unix脚本
下一篇:不滿足條件時切換案例列印案例
