2012-09-21 17 views
10

मैं स्ट्रिंग को कैसे बदल सकता हूं लेकिन केवल "sed" प्रोग्राम का उपयोग कर फ़ाइल की पहली पंक्ति में?sed पहली पंक्ति में स्ट्रिंग को प्रतिस्थापित करता है

आदेश s/test/blah/1 और 1s/test/blah/ काम नहीं कर रहे हैं। क्या कोई और तरीका है?

+1

किस बारे में '1s/परीक्षण/blah /' "काम नहीं करता है?" –

उत्तर

2

यह यह करना होगा:

sed -i '1s/^.*$/Newline/' textfile.txt 

असफल कि सिर्फ यकीन है कि मैच एक ही लाइन के लिए अद्वितीय है बनाने:

sed -i 's/this is line one and its unique/Changed line one to this string/' filename.txt 

-i विकल्प फाइल करने के लिए परिवर्तन लिखते बजाय सिर्फ प्रदर्शित आउटपुट के लिए आउटपुट।

संपादित करें:

आम स्ट्रिंग मिलान किया जाएगा द्वारा पूरी लाइन बदलने के लिए:

sed -i 's/^.*COMMONSTRING$/Newline/' 

कहाँ ^ लाइन के शुरू होने से मेल खाता है, $ पंक्ति के अंत से मेल खाता है और .* सबसे मेल खाता है COMMONSTRING

+0

लाइन अंत में एक आम स्ट्रिंग के साथ हर बार अलग होती है, लेकिन आपने मुझे यह हल करने का विचार दिया, धन्यवाद! ;) – irek

20

तक यह (जीएनयू sed) आप के लिए काम कर सकते हैं:

sed -i '1!b;s/test/blah/' file 

केवल पहली पंक्ति पर blah के लिए पहले test को प्रतिस्थापित करेगा।

या फिर आप परिवर्तन पहली पंक्ति करना चाहते हैं:

sed -i '1c\replacement' file 
+0

ओल्डस्कूल उत्तर। पसंद। वोट दें! – lzap

+1

जिस तरह से यह "! बी;" के बिना भी काम करता है - ये किसके लिये है? – lzap

+4

@lzap "1! B" = यदि लाइन '1' पर' ''' नहीं है तो 'b'ranch स्क्रिप्ट के अंत में –

संबंधित मुद्दे