Sed और awk में क्या अंतर है? [बन्द है]


497
  • Awk और sed में क्या अंतर है?
  • किस तरह के आवेदन सेड और ऑक टूल के लिए सर्वश्रेष्ठ उपयोग के मामले हैं?


जवाबों:


549

sedएक धारा संपादक है। यह प्रति-पंक्ति के आधार पर वर्णों की धाराओं के साथ काम करता है। इसमें एक आदिम प्रोग्रामिंग भाषा है जिसमें गोटो-स्टाइल लूप और सरल सशर्त (पैटर्न मिलान और पता मिलान के अलावा) शामिल हैं। अनिवार्य रूप से केवल दो "चर" हैं: पैटर्न स्पेस और होल्ड स्पेस। स्क्रिप्ट की पठनीयता मुश्किल हो सकती है। गणितीय संक्रियाएँ असाधारण रूप से सबसे अच्छी तरह अजीब होती हैं।

sedकमांड लाइन विकल्प और भाषा सुविधाओं के लिए विभिन्न स्तरों के समर्थन के विभिन्न संस्करण हैं ।

awkप्रति पंक्ति के आधार पर सीमांकित क्षेत्रों की ओर उन्मुख है। यह बहुत अधिक मजबूत सहित प्रोग्रामिंग निर्माणों है if/ else, while, do/ whileऔर for(सी-शैली और सरणी यात्रा)। चर और एकल-आयाम साहचर्य सरणियों प्लस (IMO) कुल्डी बहु-आयाम सरणियों के लिए पूर्ण समर्थन है। गणितीय संक्रियाएँ सी printf। में होती हैं। "AWK" में "K" का अर्थ " K ernighan" है जैसा कि "C Programming Language" की "Kernighan and Ritchie" की प्रसिद्धि ( A ho ho और W einberger को नहीं भूलना )। एक व्यक्ति का उपयोग कर शैक्षणिक साहित्यिक चोरी का पता लगा सकता है awk

GNU awk( gawk) में कई एक्सटेंशन हैं, जिनमें नवीनतम संस्करण में सच बहुआयामी सरणियाँ शामिल हैं। awkसहित mawkऔर के अन्य रूपांतर हैं nawk

दोनों कार्यक्रम पाठ के चयन और प्रसंस्करण के लिए नियमित अभिव्यक्ति का उपयोग करते हैं।

sedजहां पाठ में पैटर्न हैं, मैं उसका उपयोग करना चाहूंगा । उदाहरण के लिए, आप सभी नकारात्मक संख्याओं को कुछ पाठों में बदल सकते हैं जो "अंक के अनुक्रम के बाद" माइनस-साइन के रूप में हैं (उदाहरण के लिए "-231.45") "एकाउंटेंट के कोष्ठक" फॉर्म (उदाहरण के लिए "(231.45)" ) इसका उपयोग करना (जिसमें सुधार की गुंजाइश है):

sed 's/-\([0-9.]\+\)/(\1)/g' inputfile

मैं तब उपयोग करता हूँ awkजब पाठ पंक्तियों और स्तंभों की तरह दिखता है या, जैसा awkकि उन्हें "रिकॉर्ड" और "फ़ील्ड" के रूप में संदर्भित करता है। अगर मैं ऊपर जैसा एक ऑपरेशन करने जा रहा था, लेकिन केवल एक साधारण कॉमा सीमांकित फ़ाइल में तीसरे क्षेत्र पर मैं कुछ कर सकता हूं:

awk -F, 'BEGIN {OFS = ","} {gsub("-([0-9.]+)", "(" substr($3, 2) ")", $3); print}' inputfile

बेशक वे बहुत ही सरल उदाहरण हैं जो क्षमताओं की पूरी श्रृंखला का वर्णन नहीं करते हैं जो प्रत्येक को पेश करना पड़ता है।


7
की सीमाओं को धकेलने के कुछ उदाहरण देखने के लिए sed: sed.sourceforge.net/#scripts
अगली सूचना तक रोका गया।

@ डेनिसविलियम्सन - यदि मैं केवल जागता हूं तो क्या मैं एक नुकसान में हूं? क्या awk आमतौर पर sed की तुलना में अधिक उपयोग किया जाता है?
स्टीम करें

4
@ब्लस्तो: मेरी सिफारिश दोनों को सीखने की है, लेकिन जाग पर अधिक जोर देने के साथ। नियमित अभिव्यक्ति सामग्री के बहुत सारे (और अन्य उपकरण और भाषा) दोनों पर लागू होते हैं। सरल सामान के लिए sed का उपयोग करें और जटिल चीजों से बचने की कोशिश करें। यह वास्तव में अच्छा है कि आप लूप और शाखाओं को sed में कर सकते हैं, लेकिन परिणामी कमांड लाइनें जटिल और पढ़ने में कठिन हैं। आपके प्रश्न का उत्तर वास्तव में इस बात पर निर्भर करता है कि आप क्या कर रहे हैं।
अगली सूचना तक रोक दिया गया।

@ डेनिसविलियम्सन - ईटीएल डेवलपर के लिए सबसे उपयोगी क्या होगा? ETL या एक्सट्रैक्ट ट्रांसफॉर्म और लोड एक डेटा-वेयरहाउसिंग शब्द है। संक्षेप में कहें, तो नौकरी में विभिन्न असमान स्रोतों (जैसे डीबी, एक्सेल फाइलें, सीएसवी फाइलें आदि) से डेटा का विस्तार शामिल है, उसी के हस्तांतरण और फिर विश्लेषण के लिए डेटावेयर (DW) में डेटा में पैटर्न खोज, या सिर्फ ऐतिहासिक रिकॉर्ड। जैसे। डीडब्ल्यू का अंतिम उपयोग - एक किराने की दुकान के डीडब्ल्यू पर लागू एल्गोरिदम, जिसमें पिछले 10 वर्षों के डेटा हैं, यह प्रकट कर सकता है कि जो लोग सेब खरीदना चाहते हैं, वे भी संतरे या कुछ इसी तरह खरीदते हैं।
भाप

1
किसी एक FYI करें किसी के लिए इस पर ठोकर खाने के लिए MAC, "sed -E 's की कोशिश करो - ([0-9] +। [0-9] *) / ((1 1) / g'" पहले sed उदाहरण के लिए
डैनियल श्मिट

124

1) awk और sed में क्या अंतर है?

दोनों ऐसे उपकरण हैं जो पाठ को रूपांतरित करते हैं। लेकिन बस पाठ में हेरफेर करने के अलावा और चीजें भी कर सकते हैं। इसकी प्रोग्रामिंग भाषा, जो आप प्रोग्रामिंग में सीखते हैं, जैसे कि सरणियाँ, छोरों, अगर / और प्रवाह नियंत्रण आदि के साथ आप "प्रोग्राम" कर सकते हैं, साथ ही साथ आप "कोड" भी लिख सकते हैं, लेकिन आप इसमें लिखे गए कोड को बनाए नहीं रखना चाहेंगे। ।

2) किस तरह के आवेदन सबसे अच्छा उपयोग मामलों के लिए sed और awk उपकरण हैं?

निष्कर्ष: बहुत सरल पाठ पार्सिंग के लिए sed का उपयोग करें। उससे आगे कुछ भी, जागना बेहतर है। वास्तव में, आप sed को पूरी तरह से खोद सकते हैं और बस awk का उपयोग कर सकते हैं। चूंकि उनके कार्य ओवरलैप और awk अधिक कर सकते हैं, बस awk का उपयोग करें। आप अपने सीखने की अवस्था को कम कर देंगे।


7
लर्निंग कर्व के बारे में अच्छी बात है .. बहुत सारे टूल मिक्सअप कर सकते हैं .. इसलिए मैं केवल grep और awk सीखना पसंद करूँगा .. चलो sed के बारे में भूल जाते हैं :)
14'14

174
^ ^ काफी सीड। (क्षमा करें, मुझे करना था)
ग्रेग एम। कृतस

8
मुझे लगता है कि sed हालांकि सीखना बहुत आसान है, इसलिए आपको इसके लिए खाते की आवश्यकता है। जैसा कि आप awk में महारत हासिल करना सीखते हैं, यह उन चीजों के लिए तेजी से उपयोग करने में सक्षम होने के लिए जल्दी से सीखने के लिए उपयोगी हो सकता है जिन्हें आप अभी तक जागने में नहीं जानते हैं।
डिडियर ए

1
@GregKrsak आपने मेरा दिन बना दिया। (क्षमा करें, मुझे करना था)
एबेल कैलेजो

15
खाई मत करो sed, 's/search/replace'यह awkसिंटैक्स की तुलना में टाइप करने के लिए आसान है और आपको ज्यादातर समय की आवश्यकता है।
जज

54

दोनों उपकरण पाठ के साथ काम करने के लिए हैं और ऐसे कार्य हैं जिनके लिए दोनों उपकरणों का उपयोग किया जा सकता है।

मेरे लिए उन्हें अलग करने का नियम है: उन sedकार्यों को स्वचालित करने के लिए जिनका उपयोग आप अन्यथा पाठ संपादक में मैन्युअल रूप से करेंगे। इसलिए इसे स्ट्रीम एडिटर कहा जाता है । (आप पाठ को संपादित करने के लिए समान कमांड का उपयोग कर सकते हैं)। का प्रयोग करें awkआप पाठ का विश्लेषण करने, उनकी गिनती के मैदान, calculate योग, निकालने और पुनर्निर्माण संरचनाओं आदि अर्थ चाहते हैं

इसके अलावा आपको भूलना नहीं चाहिए grepgrepयदि आप केवल किसी पाठ (फ़ाइल) में कुछ खोजना / निकालना चाहते हैं तो उसका उपयोग करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.