आपको पाइप करने की आवश्यकता नहीं है grep
और फिर करने के लिए awk
के रूप में पहली पंक्ति में awk
वह कर सकता है जो स्वयं की आवश्यकता है। इसके अलावा जिस तरह से आपके पास पहली पंक्ति लिखी है, वह गायब है $(...)
आज्ञाओं के आसपास।
दूसरी पंक्ति में आप फ़ील्ड विभाजक को याद कर रहे हैं awk
कमांड, जिसमें ए .csv
फ़ाइल सामान्य रूप से एक अल्पविराम है। तो मैंने कहा कि करने के लिए awk
आदेश।
निम्नलिखित दो पंक्तियों का उपयोग करें:
myBSSID="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | awk '/BSSID/{print $2}')"
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
मैं के उत्पादन पर ध्यान दिया airport
कमांड ने रिपोर्ट नहीं की BSSID
सही में अगर कुछ शून्य बाहर छोड़ दिया।
अगर आपके सिस्टम पर ऐसा है और .cvs
फ़ाइल में उचित जानकारी है, तो निम्न प्रयास करें:
myBSSID="$(system_profiler SPAirPortDataType | awk '/BSSID/{print $2}')"
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
ध्यान दें कि system_profiler SPAirPortDataType
उपयोग करने में उतना तेज़ नहीं है airport
लेकिन अगर का उत्पादन airport
शून्य से कुछ छोड़ रहा है, तो आपको एक विकल्प की आवश्यकता होगी यदि BSSID
में है .cvs
फ़ाइल में सभी 12 वर्ण हैं, कॉलन की गिनती नहीं, जो उन्हें चाहिए।
निम्नलिखित में दोनों विधियों को शामिल करने के लिए इस्तेमाल किया जा सकता है bash
लिपि के रूप में केवल दूसरी विधि का उपयोग करने के लिए अगर की लंबाई myBSSID
कम है तो 17 अक्षर, 17 सही लंबाई है।
#!/bin/bash
myBSSID="$(/S*/L*/P*/A*/V*/A/R*/airport -I | awk '/BSSID/{print $2}')"
l="${#myBSSID}"
if [[ $l -lt 17 ]]; then
myBSSID="$(system_profiler SPAirPortDataType | awk '/BSSID/{print $2}')"
fi
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
pandas
अजगर में मॉड्यूल।