2010-06-02 10 views
5

के रूप में शीर्षक कहा, मैं sed की/इस/कि /' फ़ाइल का उपयोग word.By का केवल पहली घटना को बदलने के लिए कोशिश कर रहा। txtएसईडी के/इस/कि/'- अनदेखी जी लेकिन अभी भी की जगह पूरी फ़ाइल

हालांकि मैं जी विकल्प का उपयोग नहीं कर रहा हूं, यह पूरी फ़ाइल को प्रतिस्थापित करता है। इसे कैसे ठीक करें।

अद्यतन:

$ cat file.txt 
    first line 
    this 
    this 
    this 
    this 
$ sed -e '1s/this/that/;t' file.txt 
    first line 
    this // ------> I want to change only this "this" to "that" :) 
    this 
    this 
    this 
+0

तुम मेरे जवाब में दी गई पूर्ण एसईडी उदाहरण उपयोग नहीं कर रहे। मैंने इसका परीक्षण किया है और मेरे लिए काम करता है। – zaf

उत्तर

6

http://www.faqs.org/faqs/editor-faq/sed/

4,3। मैं केवल पैटर्न की पहली घटना कैसे बदलूं?

sed -e '1s/LHS/RHS/;t' -e '1,/LHS/s//RHS/' 

कहाँ एलएचएस = इस और आरएचएस = कि आपके उदाहरण के लिए।

आप पैटर्न पहली पंक्ति पर घटित नहीं जाएगा पता है, पहले -e और बयान यह निम्नलिखित छोड़ देते हैं।

+0

कृपया ऊपर मेरा उदाहरण देखें। –

+0

आप पूर्ण sed उदाहरण का उपयोग नहीं कर रहे हैं मैंने इसका परीक्षण किया है और मेरे लिए काम करता है। – zaf

+0

धन्यवाद - ई काम करता है - sed -e '1s/एलएचएस/आरएचएस /; टी' -ई '1,/एलएचएस/एस // आरएचएस /' –

1

sed स्वयं फ़ाइल के माध्यम से संपादन को लागू करता है और "जी" ध्वज के साथ संयुक्त संपादन को उसी पंक्ति पर सभी घटनाओं पर लागू किया जाता है।

उदा

$ cat file.txt 

    first line 
    this this 
    this 
    this 
    this 

$ sed 's/this/that/' file.txt 
    first line 
    that this 
    that 
    that 
    that 

$ sed की/इस/कि/जी 'file.txt

first line 
    that that <-- Both occurrences of "this" have changed 
    that 
    that 
    that 
संबंधित मुद्दे