स्ट्रीम संपादक - विशेष वर्ण

SED दो विशेष वर्ण प्रदान करता है जिन्हें कमांड के रूप में माना जाता है। यह अध्याय इन दो विशेष वर्णों के उपयोग को दर्शाता है।

= आज्ञा

"=" कमांड लाइन नंबरों से संबंधित है। नीचे दिया गया "=" कमांड का सिंटैक्स है:

[/pattern/]= 
[address1[,address2]]=

= कमांड मानक आउटपुट स्ट्रीम पर अपनी सामग्री के बाद लाइन नंबर लिखता है। निम्न उदाहरण यह दिखाता है।

[jerry]$ sed '=' books.txt

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलता है:

1 
1) A Storm of Swords, George R. R. Martin, 1216 
2 
2) The Two Towers, J. R. R. Tolkien, 352 
3 
3) The Alchemist, Paulo Coelho, 197 
4 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5 
5) The Pilgrimage, Paulo Coelho, 288 
6 
6) A Game of Thrones, George R. R. Martin, 864

आइए हम लाइन नंबर और पहले चार लाइनों की सामग्री को प्रिंट करते हैं। निम्नलिखित कमांड लाइन संख्याओं के साथ पहले चार लाइनों को प्रिंट करता है और शेष बिना लाइन नंबर के।

[jerry]$ sed '1, 4=' books.txt

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलता है:

1 
1) A Storm of Swords, George R. R. Martin, 1216 
2 
2) The Two Towers, J. R. R. Tolkien, 352 
3 
3) The Alchemist, Paulo Coelho, 197 
4 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

इसके अतिरिक्त, हम SED को निर्देश दे सकते हैं कि पैटर्न मिलान सफल होने पर लाइन नंबर प्रिंट करें। निम्न उदाहरण उस लाइन संख्या को प्रिंट करता है जिसमें पैटर्न "पाउलो" होता है।

[jerry]$ sed '/Paulo/ =' books.txt

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलता है:

1) A Storm of Swords, George R. R. Martin, 1216 
2) The Two Towers, J. R. R. Tolkien, 352 
3 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

क्या आप अनुमान लगा सकते हैं कि निम्नलिखित SED कमांड क्या करती है?

[jerry]$ sed -n '$ =' books.txt

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलता है:

6

हाँ आप सही है। यह फ़ाइल में मौजूद लाइनों की कुल संख्या को गिनता है। हमें कोड को ध्वस्त करना चाहिए। कमांड सेक्शन में, हमने "$ =" का इस्तेमाल किया, जो कि इसके कंटेंट के बाद आखिरी लाइन की लाइन नंबर प्रिंट करता है। लेकिन हमने भी प्रदान किया-n ध्वज जो पैटर्न बफर के डिफ़ॉल्ट मुद्रण को दबा देता है। इसलिए, केवल अंतिम पंक्ति संख्या प्रदर्शित होती है।

और कमांड

SED विशेष चरित्र और का समर्थन करता है। जब भी कोई पैटर्न मैच सफल होता है, यह विशेष वर्ण मिलान पैटर्न को संग्रहीत करता है। इसका उपयोग अक्सर प्रतिस्थापन कमांड के साथ किया जाता है। आइए हम देखें कि हम इस कुशल सुविधा का लाभ कैसे उठा सकते हैं।

Book.txt फ़ाइल में प्रत्येक पंक्ति क्रमांकित है। हमें शब्दों को जोड़ने देंBook numberप्रत्येक पंक्ति की शुरुआत में। निम्न उदाहरण यह दिखाता है।

[jerry]$ sed 's/[[:digit:]]/Book number &/' books.txt

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलता है:

Book number 1) A Storm of Swords, George R. R. Martin, 1216 
Book number 2) The Two Towers, J. R. R. Tolkien, 352 
Book number 3) The Alchemist, Paulo Coelho, 197 
Book number 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
Book number 5) The Pilgrimage, Paulo Coelho, 288 
Book number 6) A Game of Thrones, George R. R. Martin, 864

यह उदाहरण बहुत सरल है। सबसे पहले, हम एक अंक की पहली घटना के लिए खोज करते हैं, जो कि लाइन नंबर है (यही कारण है कि हमने [[अंक:]]] का उपयोग किया है और SED स्वचालित रूप से विशेष चरित्र में मिलान पैटर्न को संग्रहीत करता है। दूसरे चरण में, हम शब्दों को सम्मिलित करते हैंBook number प्रत्येक मिलान किए गए पैटर्न से पहले, अर्थात, प्रत्येक पंक्ति से पहले।

एक और उदाहरण लेते हैं। Book.txt फ़ाइल में, अंतिम अंक का तात्पर्य पुस्तक के पृष्ठों की संख्या से है। इससे पहले "पेज =" जोड़ें। ऐसा करने के लिए, अंक की अंतिम घटना को ढूंढें और इसे "पेज = &" से बदलें। यहां, और मिलान किए गए पैटर्न, यानी पृष्ठों की संख्या को संग्रहीत करता है

[jerry]$ sed 's/[[:digit:]]*$/Pages = &/' books.txt

उपरोक्त सिंटैक्स को निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं:

1) A Storm of Swords, George R. R. Martin, Pages = 1216 
2) The Two Towers, J. R. R. Tolkien, Pages = 352 
3) The Alchemist, Paulo Coelho, Pages = 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, Pages = 432 
5) The Pilgrimage, Paulo Coelho,Pages = 288 
6) A Game of Thrones, George R. R. Martin, Pages = 864

कुछ समय के लिए बस इतना याद रखें [[:digit:]]*$अंक की अंतिम घटना को पाता है। "रेगुलर एक्सप्रेशंस" अध्याय में, हम नियमित अभिव्यक्तियों के बारे में अधिक जानकारी प्राप्त करेंगे।