मेरे पास एक फ़ाइल है जिसमें कई रेखाएं हैं (रेखा डेलीमीटर ~ है)। प्रत्येक पंक्ति में, मेरे पास कई तत्व हैं जो एक delimiter '*' से अलग है। मैं क्या करना चाहता हूं, मेरे पास एक पंक्ति होगी जो मेरी फ़ाइल में स्ट्रिंग TRN के साथ शुरू होती है। इसमें 4 (टीआरएन सहित) या इसमें अधिक डेटा पॉइंट हो सकते हैं। कुछ की तरह,एक के साथ एक लाइन के एक हिस्से को कैसे बदल सकता है?
TRN*1*S521000035*1020494919~
TRN*1*S521000035*1020494919*787989800~
मैं abc123 को यह लाइनों से चौथे डेटा बिंदु बदलना चाहते हैं। यानी,
TRN*1*S521000035*abc123~
TRN*1*S521000035*abc123*787989800~
मैं नियमित अभिव्यक्ति
sed -i 's/^TRN\*(.*)\*(.*)\*(.*)$/abc123/g' file.txt
लेकिन पूरी स्ट्रिंग abc123 के लिए प्रतिस्थापित किया जा रहा है के साथ एसईडी आदेश का उपयोग करने की कोशिश की।
क्या सीड कमांड का उपयोग करके केवल 4 वें डाटापॉइंट को बदलना संभव है?
काम किया। आपका बहुत बहुत धन्यवाद! –
उपरोक्त मामले में मैं चौथे डेटा बिंदु को प्रतिस्थापित करना चाहता था, केवल तभी जब पहला डेटा बिंदु TRN है। इसलिए मैंने आपके आदेश को 'sed -r -i'/^ (TRN \ *) ((\ w + \ *) {2}) \ w * (के रूप में tweaked किया।*)/\ 1 \ 2abc123 \ 4/g '' –