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

लिनक्स कमांड लाइन मैजिक - ढूंढें और बदलें

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

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

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

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

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

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

# बिल्ली डेटाबेस.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
# cdatabase.txt पर
LOCAL_DATABASE =192.168.1.22
LOCAL_DIR =/home/calvin/
PROD_DB =192.168.1.22

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

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

# बिल्ली डेटाबेस.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
# बिल्ली डेटाबेस.txt
LOCAL_DATABASE =192.168.1.22
LOCAL_DIR =/home/calvin/
PROD_DB =192.168.1.22, 192.168.1.16

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

# ढूंढें। -मैक्सडेप्थ 1-नाम "*.txt" -टाइप f -exec sed -i 's/wine/शैम्पेन/' {} \

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

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


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

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

  1. क्रोम और फ़ायरफ़ॉक्स में टेक्स्ट कैसे खोजें और बदलें

    एक ब्राउज़र, जैसा कि इसके नाम का तात्पर्य है, वेब ब्राउज़ करने के लिए है। यह एक टेक्स्ट एडिटर के रूप में उपयोग करने के लिए नहीं है। इसलिए आपको ब्राउजर में टेक्स्ट-एडिटिंग फीचर्स जैसे फाइंड एंड रिप्लेस टेक्स्ट विरले ही मिलते हैं। हालाँकि, कई बार आप अपना ब्लॉग पोस्ट लिख रहे होते हैं, एक टिप्पणी टाइप

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

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