Computer >> कंप्यूटर ट्यूटोरियल >  >> स्मार्टफोन्स >> Linux

Linux कमांड लाइन मैजिक - फाइंड और रिप्लेस

यह गाइड आपको दिखाएगी कि Linux का उपयोग करते समय फ़ाइलों और डायरेक्टरी में शब्दों, स्ट्रिंग्स या वाक्यांशों को कैसे ढूंढें और बदलें।

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

इस अभ्यास के उद्देश्य के लिए हम "sed" नामक Linux कमांड लाइन टूल का उपयोग करेंगे। "sed" एक बहुत शक्तिशाली और बहुमुखी टूल है, और इसकी क्षमताओं के बारे में बहुत कुछ लिखा जा सकता है। हम यहां "sed" के एक बहुत सीमित पहलू का उपयोग कर रहे हैं। यदि आप इसके इस पहलू को दिलचस्प पाते हैं तो मैं निश्चित रूप से सलाह दूंगा कि आप "sed" पर थोड़ा और पढ़ें।

हम फ़ाइल में टेक्स्ट की स्ट्रिंग को ढूंढने और बदलने के लिए निम्न सिंटैक्स का उपयोग करने जा रहे हैं:

# sed -i 's/[orginal_text]/[new_text]/' filename.txt

मान लें कि आपके पास "database.txt" नामक फ़ाइल है जिसमें आपके डेटाबेस सर्वर के IP पते के कई उदाहरण हैं। आपने अभी एक नए डेटाबेस सर्वर पर स्विच किया है और इसे नए सर्वर के IP पते से अपडेट करने की आवश्यकता है। पुराना IP पता 192.168.1.16 है और नया 192.168.1.22 है। यहां बताया गया है कि आप इसके बारे में कैसे जाते हैं:

# cat database.txt
LOCAL_DATABASE = 192.168.1.16
LOCAL_DIR = /home/calvin/
PROD_DB = 192.168.1.16

# sed -i 's/192.168.1.16/192.168.1.22/g' database.txt
# cat database.txt
LOCAL_DATABASE = 192.168.1.22
LOCAL_DIR = /home/calvin/
PROD_DB = 192.168.1.22

अब फ़ाइल "database.inc" खोलें और जांचें कि नए IP पते ने आपके पुराने की जगह ले ली है या नहीं। उपरोक्त कमांड का विवरण यहां दिया गया है। पहले आप "sed" कमांड को कॉल करते हैं। फिर आप इसे पैरामीटर "-s" पास करते हैं जो "in place of" के लिए खड़ा है। अब हम अगले बिट के लिए नियमित अभिव्यक्तियों का थोड़ा सा उपयोग करते हैं, जिसे आमतौर पर "regex" के रूप में जाना जाता है। उद्धृत स्ट्रिंग में "s" "substitute" के लिए खड़ा है, और अंत में "g" "global" के लिए खड़ा है। उनके बीच वे उस टेक्स्ट स्ट्रिंग के "वैश्विक प्रतिस्थापन" का परिणाम देते हैं जिसे आप उनके बीच रखते हैं।

आप वैकल्पिक रूप से अंत में "g" को छोड़ सकते हैं। इसका मतलब है कि प्रतिस्थापन वैश्विक नहीं होगा, जो व्यावहारिक रूप से एक लाइन में स्ट्रिंग के केवल पहले उदाहरण के प्रतिस्थापन में तब्दील होता है। इसलिए यदि आपके पास उस टेक्स्ट के कई उदाहरणों वाली लाइन थी जिसे आप बदलने का प्रयास कर रहे हैं, तो यहां क्या होगा

# cat database.txt
LOCAL_DATABASE = 192.168.1.16
LOCAL_DIR = /home/calvin/
PROD_DB = 192.168.1.16, 192.168.1.16

# sed -i 's/192.168.1.16/192.168.1.22/' database.txt
# cat database.txt
LOCAL_DATABASE = 192.168.1.22
LOCAL_DIR = /home/calvin/
PROD_DB = 192.168.1.22, 192.168.1.16

यहां असली जादू आता है। अब, मान लें कि आप टेक्स्ट की स्ट्रिंग को न केवल एक फ़ाइल में, बल्कि पूरी डायरेक्टरी में बदलना चाहते हैं जिसमें आप हैं। कई टेक्स्ट फ़ाइलें हैं जिनमें आपको "wine" को "champagne" से ढूंढना और बदलना है।

# find . -maxdepth 1 -name "*.txt" -type f -exec sed -i 's/wine/champagne/' {} \

हम वर्तमान डायरेक्टरी में सभी टेक्स्ट फ़ाइलों की सूची प्राप्त करने के लिए find कमांड का उपयोग करते हैं। वह भाग है "find . -maxdepth 1 -name "*.txt" -type f"। "find . maxdepth 1" कंप्यूटर को वर्तमान डायरेक्टरी में देखने और वर्तमान डायरेक्टरी से गहरे नहीं जाने के लिए कहता है। '-name "*.txt"' भाग find को केवल ".txt" एक्सटेंशन वाली फ़ाइलों को सूचीबद्ध करने के लिए कहता है। फिर "-type f" खंड निर्दिष्ट करता है कि "find" को केवल सटीक मिलान वाली फ़ाइलों को चुनना चाहिए। अंत में "-exec" भाग "find" को उसके बाद आने वाली कमांड को निष्पादित करने के लिए कहता है, जो इस मामले में टेक्स्ट को बदलने के लिए "sed" कमांड है - "sed -i 's/wine/champagne/' {} \"।

अब जब आप फ़ाइलों में चीजों को ढूंढ और बदल सकते हैं, तो क्यों न हमारे अन्य Linux टिप्स देखें :)

  1. लिनक्स और macOS में fd का उपयोग करके फ़ाइलों को तेजी से कैसे खोजें लिनक्स और macOS में fd का उपयोग करके फ़ाइलों को तेजी से कैसे खोजें

    fd, find कमांड का एक सरल विकल्प है। यह आपके टाइप किए गए कमांड को छोटा और मुद्दे पर रखने के लिए एक छोटे सिंटैक्स और संक्षिप्त कमांड संरचना का उपयोग करता है। हालांकि, वह वर्बोसिटी की कमी जो fd को टाइप करना आसान बनाती है, इसे समझना अधिक कठिन बना देती है। fd डिफ़ॉल्ट find कमांड की तुलना में पैटर्न-मैचिं

  1. Chrome और Firefox में टेक्स्ट ढूंढें और बदलें Chrome और Firefox में टेक्स्ट ढूंढें और बदलें

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

  1. नोटपैड++ में स्ट्रिंग/कैरेक्टर/सिंबल को नई लाइन से ढूंढें और बदलें नोटपैड++ में स्ट्रिंग/कैरेक्टर/सिंबल को नई लाइन से ढूंढें और बदलें

    नोटपैड++ एक सोर्स कोड और टेक्स्ट एडिटर है जिसका उपयोग ज्यादातर प्रोग्रामर अपने कोड को आसान वातावरण में संपादित करने के लिए करते हैं। यह डिफ़ॉल्ट नोटपैड का उन्नत संस्करण है और यह कई भाषाओं का समर्थन करता है। कई विशेषताएं और उपकरण हैं जिनका उपयोग उपयोगकर्ता अपने सोर्स कोड या टेक्स्ट को संपादित करने के