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 के दर्शन को जीवंत करते हुए कि सरल, शक्तिशाली उपकरणों का उपयोग करके जटिल कार्यों को पूरा करें।