sedऔर के awkसुपरसेट हैं grep, ऐसी चीजें हैं जो एक या दूसरे के साथ करना आसान है।
grep fooलिखा sed '/foo/!d'या लिखा जा सकता है awk /foo/, लेकिन विचार करें:
grep -i foosed '/[fF][oO][oO]/!d'जब तक आप GNU जैसे गैर-मानक एक्सटेंशन पर विचार नहीं करना चाहते हैं, तब होना चाहिए sed '/foo/I!d'। या awk: awk 'tolower($0) ~ /foo/'या फिर एक GNU एक्सटेंशन का उपयोग करके awk -v IGNORECASE=1 /foo/:।
विभिन्न उपकरण अच्छे हैं और अन्य उपकरणों के साथ बोझिल हैं:
ग्रेप
grepएक सरल उपकरण है लेकिन बहुत विशेष ऑपरेशन की विधियां कि कठिन साथ पुन: पेश करने हैं awkया sed:
grep -i असंवेदनशील मिलान के लिए (ऊपर देखें)
grep -Fe "$string"निश्चित स्ट्रिंग खोज के लिए ( export string; awk 'index($0, ENVIRON["string"])'साथ awk, कोई प्रत्यक्ष समकक्ष नहीं sed)।
- (गैर मानक)
grep -rपुनरावर्ती खोज के लिए
- (गैर मानक)
grep -P/ pcregrepperl-like regexps के लिए (कुछ sedकार्यान्वयनों में perl-like regexp समर्थन है, हालांकि सबसे प्रमुख नहीं)
- (गैर मानक)
grep -oमिलने वाले भाग पर लौटने के लिए (के कई लाइनों awkया sedभी ऐसा ही करने के लिए)
- (गैर मानक)
grep -A/B/Cमैच के आसपास संदर्भ लौटाने के लिए (फिर से उसी तरह से sedया करने के लिए दर्दनाक awk)
sed
s/foo/bar/: sedके sआदेश सुविधाओं है कि में लागू करने के लिए कड़ी मेहनत कर रहे हैं awkकी तरह:
s/foo\(.*\)bar/\1/g: कैप्चरिंग (हालांकि GNU awk के लिए एक gensub()विस्तार है)
s/foo/bar/3: प्रत्येक पंक्ति पर तीसरी घटना को प्रतिस्थापित करें
- (गैर-मानक): इन-प्लेस फ़ाइल एडिटिंग (हालाँकि यह
awkअब GNU द्वारा समर्थित है )।
awk
awk तीनों में सबसे ज्यादा अमीर है।
- संख्या से निपटने के लिए अच्छा है
- कॉलम में स्वरूपित इनपुट से निपटने के लिए अच्छा है।
- विभिन्न स्रोतों से डेटा निकालने और संयोजन के लिए अच्छा है, इसके साहचर्य सरणियों के साथ।
पर्ल
perlएक व्यावहारिक निष्कर्षण और रिपोर्टिंग उपकरण के रूप में उन सभी का सबसे अच्छा है। यही कारण है कि इसे शुरू में (सभी sed/ awkअप्रचलित उपकरण बनाने के लिए) बनाया गया था ।
perlटेक्स्ट प्रोसेसिंग करने में माहिर होना एक गंभीर लाभ देता है। मैं इस पर कुछ समय बिताने की सलाह दूंगा, sedउदाहरण के लिए कम सामान्य आदेशों को देखने से पहले भी ।
प्रदर्शन
अंगूठे के एक नियम के रूप में, उपकरण जितना अधिक विशिष्ट है, यह कार्य में सबसे कुशल है। लेकिन यह भी बहुत हद तक कार्यान्वयन पर निर्भर करता है, कार्य और कुछ अन्य कारकों और प्रदर्शन में व्यापार-बंद हो सकते हैं जिन्हें खाते में लेने की आवश्यकता हो सकती है।
उदाहरण के लिए, कुछ grepया sedकार्यान्वयन ऐसे हैं जो बहुत तेज़ हैं, लेकिन उदाहरण के लिए वे मल्टीबाइट वर्णों का समर्थन नहीं करते हैं, इसलिए केवल बहु-बाइट स्थानों में यूएस-अंग्रेज़ी पाठ पर सही ढंग से काम कर सकते हैं। या वे उपवास कर रहे हैं क्योंकि वे एक छोटी फिक्स्ड-लंबाई बफर पर काम करते हैं और इस तरह मनमाने इनपुट पर काम नहीं कर सकते हैं ...