CLI वन-लाइनर्स के साथ फाइलों में स्थल पर संपादन

Bash:
CLI वन-लाइनर्स के साथ फाइलों में स्थल पर संपादन

कैसे करें:

जब बात आती है Bash का उपयोग करते हुए फ़ाइलों में स्थान-विशेष में संपादन करने की, तो दो प्रमुख उपकरण आते हैं: sed और awk। चलिए इन शक्तिशाली उपयोगिताओं को कुछ कोडिंग उदाहरणों के साथ कैसे उपयोग करें इसकी खोज करते हैं।

सरल पाठ प्रतिस्थापन के लिए sed का उपयोग करना

निम्नलिखित कमांड file.txt में “text1” के पहले अवसर को “text2” से बदल देता है:

sed -i 's/text1/text2/' file.txt

हर अवसर को बदलने के लिए (सभी अवसर), आप अंत में g जोड़ देंगे:

sed -i 's/text1/text2/g' file.txt

एक साथ कई फ़ाइलों को संशोधित करने के लिए:

sed -i 's/text1/text2/g' file1.txt file2.txt file3.txt

अधिक जटिल मेनिप्युलेशन के लिए awk का उपयोग

awk एक और उपकरण है जो अपनी प्रोग्रामिंग क्षमताओं के साथ चमकता है, विशेष रूप से क्षेत्र आधारित डेटा वाली टेक्स्ट प्रोसेसिंग के लिए उपयोगी है।

data.csv में प्रत्येक पंक्ति के दूसरे क्षेत्र को अल्पविराम से अलग करते हुए newValue में बदलना:

awk -i inplace -F, '{$2="newValue"; print $0}' OFS=, data.csv

कूदने से पहले बैकअप

एक व्यावहारिक सलाह: हमेशा स्थान-विशेष में संपादन करने से पहले एक बैकअप बना लें। sed इसकी सुविधा -i विकल्प के साथ एक सफिक्स जोड़कर बैकअप बनाने के साथ प्रदान करता है।

sed -i.bak 's/text1/text2/g' file.txt

यह कमांड मूल file.txt का बैकअप file.txt.bak के रूप में बनाता है प्रतिस्थापन करने से पहले।

गहराई से समझें

कमांड लाइन से सीधे फ़ाइलों में संपादन करने की क्षमता का विकास Unix के दर्शन के एक स्वाभाविक प्रगति के रूप में हुआ: उपयोगकर्ताओं को यथासंभव कम कीस्ट्रोक्स के साथ डेटा को प्रबंधन और मेनिप्युलेट करने की शक्ति प्रदान करना। फिर भी, इस शक्ति के साथ इसकी साव�हानियाँ भी हैं।

ऐतिहासिक संदर्भ

Unix उपकरण जैसे sed और awk Unix के शुरुआती दिनों से रहे हैं, विशेषज्ञ, संयोज्य आदेशों पर केंद्रित इसके उपकरण किट दर्शन के एक भाग के रूप में बनाए गए। कमान्ड लाइन इंटरफेसेज़ द्वारा प्रभुत्व वाले परिदृश्य में प्रभावी पाठ संसाधन की आवश्यकता के जवाब में उनका Unix के �रस्त्रार में शामिल होना हुआ।

विकल्प

जबकि sed और awk शक्तिशाली हैं, वे एकमात्र विकल्प नहीं हैं। उदाहरण के लिए, Perl और Python में कुछ समान स्थान-विशेष संपादन क्षमताओं को अनुमति देने वाले कमान्ड-लाइन विकल्प (-p और -i, क्रमशः) हैं, जिनमें जटिल ऑपरेशनों के लिए अधिक पठनीय सिंटैक्स हो सकता है।

perl -pi -e 's/text1/text2/g' file.txt
python -c "import fileinput, sys; [sys.stdout.write(line.replace('text1', 'text2')) for line in fileinput.input(files='file.txt', inplace=True)]"

प्रत्येक विकल्प की अपनी ताकत है: Perl की एक-लाइनर क्षमताएं अथाह हैं, और Python का सिंटैक्स Unix पाठ प्रोसेसिंग उपकरणों में गहराई से पारंगत न होने वालों के लिए अधिक सुलभ हो सकता है।

कार्यान्वयन विवरण

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

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