NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
HI

लिनक्स कमांड और शेल कौशल

sed: संपादक को खोले बिना स्ट्रीम संपादित करना

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

मुख्य बिंदु

  1. प्रतिबद्ध होने से पहले पूर्वावलोकन करें: sed -n '10,20p' फ़ाइल एक लाइन रेंज दिखाती है, और वही -n प्लस p संयोजन केवल उन पंक्तियों को प्रिंट करता है जो रेगेक्स या पते से मेल खाते हैं।
  2. उन झंडों से प्रतिस्थापित करें जो आपके मतलब को पूरा करते हैं: सभी मैचों के लिए s/पुराना/नया/g, केवल दूसरे के लिए 2g जैसी संख्या, और बैकस्लैश एस्केप के एक पृष्ठ के बिना विस्तारित रेगेक्स के लिए -E।
  3. इन-प्लेस संपादनों में एक प्रत्यय मिलता है, कोई अपवाद नहीं: sed -i.bak 's/http:/https:/g' ऐप हर बदलाव के आगे एक समान नाम का बैकअप रखता है; उस प्रत्यय ने किसी भी संपादक के पूर्ववत इतिहास की तुलना में अधिक तैनाती बचाई है।
  4. डिलीमीटर मुफ़्त हैं: s|/var/www|/srv/app|g (या s#...#g) जब आपका पैटर्न पथों से भरा होता है तो स्लैश-एस्केपिंग झगड़ों से बचता है।
  5. -i परमाणु नहीं है: एक क्रैश या खराब रेगेक्स मिड-बैच एक बार आधी-फिर से लिखी गई फ़ाइलों को पीछे छोड़ देता है, इसलिए थोक नौकरियां प्रतियों या गिट-ट्रैक किए गए पेड़ों के विरुद्ध चलती हैं, कभी भी एकमात्र प्रतिलिपि नहीं।
  6. GNU और BSD sed -i पर असहमत हैं: BSD को स्क्रिप्ट से पहले प्रत्यय की आवश्यकता होती है (sed -i '' macOS पर काम करता है, Linux सिंटैक्स नहीं है), जो एक और कारण है कि पोर्टेबिलिटी स्क्रिप्ट पूरी तरह से -i से बचती हैं।
  7. डिलीट और आइसोलेट ईमानदार क्रियाएं हैं: 'd' मेल खाने वाली पंक्तियों को हटा देता है (sed '/^#/d' टिप्पणियाँ हटा देता है), और -n एक श्रेणी के साथ एक सेक्शन को अलग कर देता है; दोनों चतुर प्रतिस्थापन से बेहतर पढ़ते हैं।
  8. सिंगल-लाइन संपादन, शाब्दिक मल्टी-लाइन ब्लॉक, या स्टेटफुल जॉइन से पहले की कोई भी चीज awk या वास्तविक स्क्रिप्ट में होती है; सेड को प्रोग्रामर का काम करने के लिए मजबूर करने से अपठनीय वन-लाइनर का जन्म होता है।

क्षेत्रीय टिप्पणी

.bak प्रत्यय के बिना मेरा पहला sed -i दोपहर के ट्रैफ़िक शिखर से ठीक पहले एक उत्पादन nginx कॉन्फिगरेशन से टकराया। तब से प्रत्येक इन-प्लेस संपादन में एक बैकअप प्रत्यय होता है, और मैं -i कमांड के पास जाने से पहले ही ड्राई-रन आउटपुट पढ़ता हूं।

अक्सर पूछे जाने वाले प्रश्न

मैं केवल उन पंक्तियों को कैसे संपादित करूं जो किसी अन्य चीज़ से मेल खाती हों?

उन्हें संबोधित करें: sed '/cache/s/true/false/' केवल कैश लाइनों पर सत्य से असत्य पर फ़्लिप होता है, और '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' जैसी श्रेणियां ब्लॉक में संपादित होती हैं; पता पहले जाता है, आदेश बाद में।

विंडोज-संपादित फ़ाइल में sed लाइनों के सिरों से मेल क्यों नहीं खाएगा?

वे पंक्तियाँ कैरिज-रिटर्न वर्णों के साथ समाप्त होती हैं जिनकी '$' एंकर अपेक्षा नहीं करते हैं; पहले उन्हें tr से हटाएं या रास्ते में सामान्य करें, और मल्टीलाइन सामग्री अभी भी -0777 के साथ awk या Perl में है।

क्या साधारण प्रतिस्थापन के लिए sed awk से तेज़ है?

सीमांत और अप्रासंगिक रूप से; दोनों कॉन्फ़िगरेशन-आकार की फ़ाइलों पर मिलीसेकंड में समाप्त होते हैं। पठनीयता के आधार पर चुनें, क्योंकि एक सहकर्मी को छह महीने में आपके वन-लाइनर को सुलझाना होगा।

क्या मैं sed के साथ संपूर्ण कॉन्फ़िगरेशन ब्लॉक सम्मिलित कर सकता हूं?

हाँ: 'a' बाद में जुड़ता है, 'i' पहले सम्मिलित होता है, और 'c' पंक्ति को प्रतिस्थापित करता है, लेकिन सम्मिलित पाठ को सरल और एक उद्देश्य वाला रखें; वास्तविक ब्लॉक टेम्पलेट फ़ाइल या उचित प्रावधान चरण में होते हैं।

लिनक्स कमांड और शेल कौशल में Kinetikatech कैसे सहायता करता है

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

इंजीनियर से बात करें

सर्वर समस्या? हैक साइट? धीमी वेबसाइट?

गंभीर समस्याओं पर 30 मिनट में जवाब — दिन-रात, सप्ताह के सातों दिन।

आपात सहायता मांगें support@kinetikatech.com