कुछ अवसरों पर हम किसी फ़ाइल के भीतर पाठ को बदलना चाहते हैं, उदाहरण के लिए, इसमें परिवर्तन करें दस्तावेज़ वह सब कुछ जो "मेरा परिवार" कहता है "हमें।" इसे प्राप्त करने के लिए हम अपने पसंदीदा टेक्स्ट एडिटर (केट, गेडिट, सबलाइमटेक्स्ट आदि) का उपयोग कर सकते हैं, लेकिन वेरिएंट को जानना हमेशा अच्छा होता है, उसी परिणाम को प्राप्त करने के अन्य तरीके use
ऐसा होता है नियमित अभिव्यक्ति यह हासिल किया जा सकता है, sed कमांड बस शानदार है, इसमें अंतहीन वेरिएंट और विकल्प हैं लेकिन ... उन लोगों के लिए जो केवल टेक्स्ट से बदलना चाहते हैं कम से कम जटिल तरीका संभव है, उनके लिए यह है कि मैं यह बहुत सरल संस्करण लाती हूं:
उदाहरण के बाद, हमारे पास फ़ाइल है दस्तावेज़ में स्थित है $ HOME / Document.txt निम्नलिखित पाठ के साथ:
(...) मेरा परिवार यह उन सभी की तरह है, जैसे आपका या आपके पड़ोसी का। असल में मेरा परिवार हम राजनीतिक रूप से और सामाजिक रूप से सही लोगों और समाज की नज़र में जिम्मेदार होने की कोशिश करते हैं। हालांकि, मेरे घर में एक काली भेड़ है, और वह मेरी भूमिका LOL है! मैं हमेशा वही रहा हूं जो यह कहने से डरता नहीं है कि वह क्या सोचता है (भले ही यह स्पष्ट रूप से समाज की नजर में सही नहीं है), हालांकि वास्तव में मेरा परिवार तंग आ चुका है।
गंदगीआज का समाज।
निम्नलिखित कमांड के साथ आप बदलेंगे «मेरा परिवार" द्वारा "हमें":
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
यह इतना आसान है 🙂
तो पाठ होगा:
(...) हमें यह उन सभी की तरह है, जैसे आपका या आपके पड़ोसी का। असल में हमें हम राजनीतिक रूप से और सामाजिक रूप से सही लोगों और समाज की नज़र में जिम्मेदार होने की कोशिश करते हैं। हालांकि, मेरे घर में एक काली भेड़ है, और वह मेरी भूमिका LOL है! मैं हमेशा वही रहा हूं जो यह कहने से डरता नहीं है कि वह क्या सोचता है (भले ही यह स्पष्ट रूप से समाज की नजर में सही नहीं है), हालांकि वास्तव में मेरा परिवार तंग आ चुका है।
गंदगीआज का समाज।
वाक्य रचना है:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
कमांड थोड़ा जटिल लग सकता है, चलो इसे थोड़ा नीचे तोड़ दें और इसे थोड़ा और सरल तरीके से समझाएं
- पर्ल : हम क्या उपयोग करेंगे, पर्ल
- -पि : Pí, कैसे π (अनुमानित मूल्य 3.14)
- -e : E ने इसके लिए «e को निष्पादित करने की कल्पना की» ^ - ^
- फिर में बोली » हम एक के साथ खुला s और हम एक के साथ करीब है जी: "एसजी" … गेम ओवर Imagine के लिए स्टार्ट और जी के लिए एस की कल्पना करें
- के बीच मुड़ें sg हमें कोष्ठक के दो सेट लगाने चाहिए: [] y [], इस तरह से: "एस [] [] जी"
- जैसा कि मैंने ऊपर कहा था, पहले कोष्ठक के अंदर, वह पाठ जिसे हम हटाना चाहते हैं और एक नए के साथ प्रतिस्थापित करना चाहते हैं, जबकि दूसरे कोष्ठक के दूसरे सेट में उदाहरण के बाद नया पाठ जाएगा। "एस [मेरा परिवार] [हम] जी"
सरल है ना?
स्पष्टीकरण वास्तव में कमांड के लिए आवश्यक है की तुलना में बहुत अधिक व्यापक है, यह समझने में काफी सरल है more
पर्ल बहुत कुछ है, पाठ को बदलने के लिए सिर्फ एक तरीका है, यह एक पूरी भाषा है
यदि आप इसके बारे में अधिक जानना चाहते हैं, तो पैकेज स्थापित करें पर्ल-डॉक और यह क्या अनुमति देता है पर एक नज़र रखना, यह सिर्फ एक अलग ब्रह्मांड है।
वैसे और बंद करने के लिए, यह मानते हुए कि आप उन सभी .txt फ़ाइलों को ढूंढना चाहते हैं जो आपके पास $ HOME / दस्तावेज / हैं और हर एक में "मेरे परिवार" को "us" से बदल दें, आप इसे प्राप्त करने के लिए find + perl से जुड़ सकते हैं:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
या वाइल्डकार्ड का उपयोग करना:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
इस दूसरे संस्करण के साथ समस्या यह है कि यह उन फ़ाइलों में प्रतिस्थापित नहीं होगा जो सबफ़ोल्डर में हैं
वैसे भी, मुझे आशा है कि आपको यह रोचक लगा होगा। मेरे लिए यह वास्तव में उपयोगी रहा है, मैं पहले से ही पाठ को सीधे टर्मिनल से बदल सकता हूं ... महान! 😀
ठीक है, मुझे लगता है कि हम में से कई लोग sed कमांड जानते हैं, जो एक ही उद्देश्य को पूरा करता है, यह इसे बहुत बेहतर करता है और उपयोग करने में आसान है ...
आपके कमेंट के लिए धन्यवाद,
सिर्फ दो विवरण, आप यह क्यों कहते हैं कि सेड बेहतर बनाता है? क्या वास्तव में इतने सारे 'अजीब' पात्रों के साथ उपयोग करना आसान है?
सभी के लिए शुभकामनाएं!!!। मैंने कमांड का उपयोग किया है प्यास, और पर्ल के साथ यहाँ वर्णित विधि सरल है। धन्यवाद KZKG ^ Gaara !!!
टिप्पणी के लिए धन्यवाद 🙂
ठीक है, कम से कम मुझे ऐसा लगता है कि यह नियमित अभिव्यक्तियों की तुलना में सरल है ... इतने सारे 'अजीब' पात्रों के साथ, कुछ समझने और जानने के लिए वास्तव में जटिल है, गैर-प्रेमी के लिए किया जा सकता है।
वहाँ एक «पुराने» वहाँ से बाहर है: «मैं एक समस्या थी, मैं नियमित रूप से अभिव्यक्ति का उपयोग करने का फैसला किया ... अब मैं दो समस्याओं का सामना करना पड़ा है -»
HAHAHAHAHAHAH !!!
नियमित अभिव्यक्ति एक निश्चित बिंदु पर हमारे जीवन को बचा सकती हैं ... हाँ, यह सीखने में लंबा समय लगता है कि उनका उपयोग कैसे करना है और कोशिश करना नहीं मरना है।
अगर मैं इस आदेश को वर्षों पहले जानता था, तो जीओडी !! मेरा जीवन कितना सरल था have
स्पष्ट! अच्छी तरह से संभाला वे बहुत शक्तिशाली हैं better पाठ में हेरफेर करने के लिए बेहतर कुछ भी नहीं है। लेकिन कभी-कभी, जैसा कि आप पर्ल के साथ इस मामले में कहते हैं, आपको उस जगह तक जाने की ज़रूरत नहीं है अगर एक प्रतिस्थापन पर्याप्त है।
मैंने वैसे भी अजगर का उपयोग किया होगा :)
लेकिन प्यास में मैं इसे और भी सरल देखता हूं ... क्या मैं कुछ गलत कर रहा हूं?
sed -i "if / what-I-want-to-change / new-put-put /" file-to-replace
हेह हे ... और अगर मैं "http://my.blog.com/content/" को "http://my.blog.com/uploads/files/" 😀 ... से बदलना चाहता हूं, तो पहले से ही आपके पास है रिक्त स्थान और अन्य लोगों के साथ \, और यह जटिल हो जाता है या नहीं?
एक विभाजक के रूप में उपयोग करना अनिवार्य नहीं है। + के साथ देखें
sed -i «s + http: //my.blog.com/content/+http: //my.blog.com/uploads/files/+» फ़ाइल
O_O ... WTF!
आपने अब मेरे लिए विकल्पों का एक संपूर्ण ब्रह्मांड खोल दिया है .. O_O
मुझे ये पोस्ट बहुत पसंद हैं जहाँ हम सभी कुछ सीखते हैं we
मुझे नहीं पता था कि या तो।
मैं सीधे vi का उपयोग करना पसंद करता हूं।
की तरह सरल:
:% s / us / मेरा परिवार / g
% -> संपूर्ण दस्तावेज़
s -> खोज
जी -> सभी घटनाएँ
नमस्ते ..
ग्रेसियस!
मुझे नहीं पता कि यह कैसे करना है
पसंदीदा में जोड़ा गया!
ग्रेसियस!
यदि आपके पास rpl कमांड के लिए कुछ समय है तो देख लें
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
शानदार प्रविष्टि! यदि कोई भी रुचि रखता है, तो लिनक्स सेड कमांड के साथ ही: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
और क्या होगा अगर फ़ाइल के भीतर जो मैं बदलना चाहता हूं वह उद्धरण है?
उदाहरण यह बताता है कि पाठ क्या कहता है: »1 what पाठ द्वारा:» 2:
कमांड कैसा होगा?
नमस्ते
मैं एक स्ट्रिंग को बदलना चाहता था जिसमें बीच में एक @ था और केवल हस्ताक्षर के पहले पाठ को बदल दिया।
बदलने के लिए पाठ: लंबे समय तक पेरू
नया पाठ: चिरायु mi patria @percysalgado
दिखाया: लंबे समय तक मेरी मातृभूमि रहते हैं
आपकी मदद के लिए धन्यवाद
"\" आपको दोहरे उपयोग @, # के साथ वर्णों से पहले स्लैश का उपयोग करना चाहिए, ताकि उन्हें पाठ के रूप में व्याख्या की जाए।
और मैं इसे विंडोज़ में कैसे करूँ ????