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
)