grep। विभिन्न नियमित अभिव्यक्तियाँ हैं जो इन्हें उठाएंगी। यहाँ, मैं 2 अक्षरों या संख्याओं के 5 पुनरावृत्तियों की तलाश कर रहा हूं, जिसके बाद एक दो वर्ण होते हैं। -iमैच केस संवेदी बनाता है और -oबनाता grepही मिलने वाले भाग मुद्रित करें। -Eविस्तारित नियमित अभिव्यक्ति सक्षम करता है। वही रेगेक्स PCREs ( -P) के साथ भी काम करता है ।
ifconfig -a | grep -ioE '([a-z0-9]{2}:){5}..'
sed। -nसामान्य उत्पादन को घटाती है तथा -rविस्तारित नियमित अभिव्यक्ति सक्षम बनाता है। ऊपर के समान रेगेक्स का उपयोग करते हुए, यह स्क्रिप्ट रेगेक्स से मेल खाने वाले भाग के साथ लाइन पर सब कुछ बदलने का प्रयास करेगी। यदि प्रतिस्थापन सफल था, तो परिणामी रेखा मुद्रित होती है ( pप्रतिस्थापन के अंत में)।
ifconfig -a | sed -rn 's/.*(([a-z0-9]{2}:){5}..).*/\1/p'
awk। यदि रेखा एक शब्द वर्ण ( [a-zA-Z0-9_]) से शुरू होती है , और इसमें 5 फ़ील्ड हैं, तो अंतिम प्रिंट करें।
ifconfig -a | awk '/^\w/&&NF==5{print $NF}'
पर्ल, जहां, हमेशा की तरह, इसे करने के एक से अधिक तरीके हैं। यह एक ही तर्क है जो awkउपरोक्त है। -aपर्ल बताता में प्रत्येक इनपुट लाइन विभाजित करने के लिए @Fसरणी।
ifconfig -a | perl -lane 'if(/^\w/&&$#F==4){print $F[$#F]}'
वैकल्पिक रूप से, आप पिछले दृष्टिकोण से रेगेक्स का उपयोग कर सकते हैं:
ifconfig -a | perl -lne '/(([a-z0-9]{2}:){5}..)/ && print $1'
Coreutils।
LANG_ALL=C ifconfig -a | grep 'HWadd' | tr -s ' ' '\t' | cut -f 5
LANG=C ifconfig -aबजाय उपयोगifconfig -aकर सकते हैं, grep के साथ समस्या हो सकती है। (यानी मेरे सिस्टम में,HWaddrहैdirecciónHW)