आसन का पता लगाएं, फिर सेड का उपयोग करके परिवर्तन करें


11

यह स्क्रिप्ट सभी "" को "नए सामान" में बदलने के लिए sed का उपयोग करता है। Yyy के बाद केवल "" कैसे परिवर्तित होगा: sed या किसी अन्य चीज़ का उपयोग करना?

cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt

जवाबों:


8

मैं आपके प्रश्न को नहीं समझ सकता। यदि आप 'yyy' के बाद केवल मान को बदलना चाहते हैं तो पिछले उत्तर का उपयोग करें। यदि आप 'yyy' के बाद किसी भी मान को बदलना चाहते हैं, तो इस एक-लाइनर को आज़माएँ:

sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt

यह परीक्षण नहीं किया गया है: डी ...


3

उत्तर O’Reilly से चमकता हुआ - Sed और Awk 2nd Addiction लगभग पृष्ठ 152

किसी फ़ाइल में एक स्क्रिप्ट लिखें

/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}

इसे हमेशा के लिए अपने डेटा पर लागू करें

sed -f स्क्रिप्ट sample.txt

यह लिपि कहती है कि देखो: जब पाया गया कि पैटर्न बफर में एक और लाइन (स्टार ट्रेक ट्रांसपोर्टर जैसी लगती है)। अब शामिल लाइनों पर / कमांड के रूप में करें। इसलिए हम yyy: newline "" की तलाश कर रहे हैं। यदि yyy के साथ प्रतिस्थापित पाया जाता है: तो "new stuff" पर वास्तविक सूचना का बैकस्लैश करें

सौभाग्य


1
मैन पेज देखें: unixhelp.ed.ac.uk/CGI/man-cgi? पते के लिए खोज पैराग्राफ

1

मुझे लगता है कि एक बार चीजें जटिलता के एक निश्चित स्तर से परे हो जाती हैं, मैं पर्ल पर स्विच करता हूं । s2p आपके वर्तमान सेड सॉल्यूशन के अनुवाद को हैंडल करेगा। या आप इसे स्क्रैच से तुच्छ रूप से लिख सकते हैं। खोज / प्रतिस्थापित अभिव्यक्ति समान रहेगी।

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