सामान्यतया, एक उपकरण जितना अधिक विशिष्ट होता है, उतना ही तेज़ होता है। तो ज्यादातर मामलों में, आप उम्मीद कर सकते हैं cutऔर grepतेजी से हो सकता है sed, और sedसे तेज हो सकता है awk। यदि आप अधिक जटिल उपकरण के एकल आह्वान के साथ सरल उपकरणों की लंबी पाइपलाइनों की रचना कर रहे हैं, तो अंगूठे का कोई नियम नहीं है। यह केवल बड़े इनपुट के साथ मायने रखता है (कहते हैं, लाखों लाइनें); शॉर्ट इनपुट्स के लिए, आपको कोई अंतर दिखाई नहीं देगा।
अधिक जटिल साधनों का लाभ यह है कि वे अधिक चीजें कर सकते हैं।
आपकी आज्ञाओं का उपयोग बिल्ली अनावश्यक रूप से करती है। इसके बजाय पुनर्निर्देशन का उपयोग करें (खासकर यदि आप गति के बारे में चिंतित हैं, हालाँकि आपको शायद तब तक गति के बारे में चिंतित नहीं होना चाहिए जब तक कि आप बेंचमार्क नहीं चला लेते)।
<fileName awk '/WORD/ { print $2 }'
<fileName grep WORD | cut -f 2 -d ' '
ये कमांड लगभग बराबर हैं। अंतर हैं:
- awk और grep में अलग-अलग रीजैक्स सिंटैक्स होते हैं । जाग और
grep -E लगभग समान रेगेक्स सिंटैक्स (नियमित अभिव्यक्ति को विस्तारित) करें।
cut -d ' 'प्रत्येक व्यक्ति अंतरिक्ष चरित्र को एक सीमांकक के रूप में मानता है। Awk का डिफ़ॉल्ट सीमांकक कोई भी व्हाट्सएप अनुक्रम है, जो कई रिक्त स्थान, एक टैब आदि हो सकता है। आप मनमाने ढंग से व्हाट्सएप अनुक्रमों को विभाजकों के रूप में उपयोग नहीं कर सकते हैं cut। जाग में विभाजक के रूप में अलग-अलग रिक्त स्थान का उपयोग करने के लिए, फ़ील्ड विभाजक को एक एकल स्पेस से मेल खाने वाले regexp पर सेट करें, जो एकल स्थान से regexp के अलावा (जो कि कोई विशेष मामला है जिसका अर्थ है "कोई भी व्हाट्सएप अनुक्रम", यानी डिफ़ॉल्ट) awk -F '[ ]' '/WORD/ {print $2}':।
¹ कार्यक्रम अनुकूलन के प्रथम नियम: यह मत करो। कार्यक्रम अनुकूलन का दूसरा नियम (केवल विशेषज्ञों के लिए!): अभी तक ऐसा न करें। - माइकल ए जैक्सन
echo filenameयाcat filename?