मैं शेल स्क्रिप्ट में एक लंबी स्ट्रिंग से फ़ाइल नाम प्राप्त करना चाहता हूं। likegeeks.com, मैं एक सरल उपाय लिखता हूं:
#/bin/bash
cdnurl="http://download.example.com.cn/download/product/vpn/rules/vpn_patch_20190218162130_sign.pkg?wsSecret=9cadeddedfr7bb85a20a064510cd3f353&wsABSTime=5c6ea1e7"
echo ${cndurl}
url=`echo ${cdnurl} | awk -F'/' '{ print $NF }'`
result=`echo ${url} | awk -F '?' '{ print $1}'`
echo ${url}
echo ${result}
मैं सिर्फ vpn_patch_20190218162130_sign.pkg प्राप्त करना चाहता हूं, और यह करता है। मुझे आश्चर्य है कि क्या कोई स्मार्ट तरीका है (एक पंक्ति हो सकती है)।
अगर पीकेजी के पीछे यह नहीं है?, फ़ाइल नाम प्राप्त करने के लिए पीकेजी का उपयोग कैसे करें, मुझे यकीन नहीं है कि हमेशा? pkg के बाद, लेकिन फ़ाइल नाम हमेशा *.pkg होना चाहिए।
1 उत्तर
आप कोशिश कर सकते हैं: दूसरे awk
कमांड की तुलना में यह अधिक मजबूत है:
echo "$cdnurl"|awk -v FS='/' '{gsub(/?.*/,"",$NF);print $NF}'
vpn_patch_20190218162130_sign.pkg
#less robust
echo "$cdnurl"|awk -vFS=[?/] '{print $(NF-1)}'
आपको sed
का उपयोग करना चाहिए:
sed -r 's|.*/(.*.pkg).*|\1|g'
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
awk
AWK एक व्याख्या की गई प्रोग्रामिंग भाषा है जिसे टेक्स्ट प्रोसेसिंग के लिए डिज़ाइन किया गया है और आमतौर पर इसका उपयोग डेटा निष्कर्षण और रिपोर्टिंग टूल के रूप में किया जाता है। AWK का उपयोग काफी हद तक यूनिक्स सिस्टम के साथ किया जाता है।