फाइल में लाइन को सेड के साथ कैसे बदलें?


28

मैं sed पर बहुत सारे प्रलेखन पढ़ रहा हूं, और मैं अभी भी अपने विशेष उपयोग के मामले में फंस गया हूं।

मैं इस लाइन को अपनी फ़ाइल के साथ एक फ़ाइल में बदलना चाहता हूं:

इस पंक्ति को बदलें:

# मैक्समेरी <बाइट्स>
साथ में:
मैक्समोरी 26gb

यही मैंने कोशिश की:

सीड एस / मैक्समोरी।

मुझे त्रुटि मिली:

sed: -e अभिव्यक्ति # 1, char 30: unterminated `s 'कमांड

जो मुझे रोकता है क्योंकि मुझे नहीं पता कि इसका क्या मतलब है। तो मेरा सवाल है:

मैं जो चाहता हूं उसे कैसे पूरा कर सकता हूं? उस त्रुटि का क्या अर्थ है? (इसलिए मैं इससे सीख सकता हूं)

जवाबों:


29

तुम भूल गए हो -आई। संशोधन जगह में किया जाना चाहिए:

$ sed -i 's/maxmemory.*/maxmemory 26gb/' /some/file/some/where.txt


और अगर आपके स्ट्रिंग्स में स्लैश है, तो आपको एक और सीमांकक चरित्र का उपयोग करना चाहिए /, जैसे कि @या |। यहाँ देखें: stackoverflow.com/a/9366940/4561887 और यहाँ: unix.stackexchange.com/a/259087/114401
गेब्रियल स्टेपल्स

11

वास्तव में

त्रुटि का मतलब है कि उद्धरणों की अनुपस्थिति में, आपका शेल अलग-अलग तर्कों के लिए रिक्त स्थान का उपयोग करता है। के बीच की जगह maxmemoryऔर 26gbइस प्रकार पहला तर्क है, जो इस प्रकार एक टर्मिनल का अभाव समाप्त के रूप में माना जाता है /जब sedअपने आदेशों में से एक के रूप में है कि तर्क पार्स करने के लिए आता है।

अपने उद्धरण को एकल उद्धरणों के बीच रखना, ताकि आपका शेल इसे कई तर्कों में विभाजित न करे और इसे sedएक ही तर्क के रूप में सौंप दे , समस्या हल करता है:

$ sed s/maxmemory.*/maxmemory 26gb/ /some/file/some/where.txt
sed: -e expression n°1, caractère 23: commande `s' inachevée

जबकि

$ sed 's/maxmemory.*/maxmemory 26gb/' /some/file/some/where.txt

काम करता है।

उम्मीद है की वो मदद करदे।


1
यह ऐसा नहीं sedहै। यह वह खोल है जो ऐसा करता है।
JdeBP

आप सही कह रहे हैं, निश्चित रूप से, सिर के लिए धन्यवाद :)
Sxilderik

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.