उन पंक्तियों का चयन करने के लिए एक पता अभिव्यक्ति का उपयोग करें जिन्हें आप संपादित करना चाहते हैं, फिर वास्तव में प्रतिस्थापन करने के लिए एक नियमित प्रतिस्थापन का उपयोग करें। Sed के बारे में एक मजेदार बात यह है कि, "s" कमांड से पहले, आप उन रेखाओं को चुनने के लिए एक पंक्ति संख्या या एक नियमित अभिव्यक्ति निर्दिष्ट कर सकते हैं (पता भी अल्पविराम द्वारा अलग किया गया प्रारंभ और अंत हो सकता है जो सभी पंक्तियों को निर्दिष्ट करता है "पता श्रेणी" के भीतर निहित है, लेकिन दूसरे भाग को छोड़कर एकल लाइनों का चयन करता है)।
अपने पते की अभिव्यक्ति में, "एक अल्पविराम नहीं, जो आप चाहते हैं उसके बाद देखें"।
प्रतिस्थापन में, अपने पैटर्न से पहले सामान को याद रखें, फिर अपने प्रतिस्थापन स्ट्रिंग से पहले "पहले" भागों को रखें। आपको "पहले" भाग याद है क्योंकि आप पहले वाले सामान को केवल एक अल्पविराम में शामिल करना चाहते हैं, इससे अधिक और कम नहीं। यहाँ यह दिखा रहा है कि यह पहले क्षेत्र से मेल खाता है और केवल दूसरे को प्रभावित करता है; मैं "ला" को "moo" के साथ लाइनों के दूसरे कॉलम में बदल रहा हूं जो पहले कॉलम में "atter" से मेल खाता है।
$ echo -e "pattern,blah,aaa\npattern,bleh,stuff" | sed '/[^,]*atter/s/\(^[^,]*,[^,]*\)la/\1moo/g'
pattern,bmooh,aaa
pattern,bleh,stuff
यह अकेले खेतों में बच गए अल्पविरामों के साथ सही काम नहीं करेगा, इसलिए उम्मीद है कि आपकी सीएसवी फ़ाइल सरल है। :)