sumary
জিএনইউ সিনট্যাক্স:
sed '/claudio/{s//claudia/;:p;n;bp}' file
বা এমনকি (শব্দটি প্রতিস্থাপনের জন্য কেবল একবার ব্যবহার করতে:
sed '/\(claudi\)o/{s//\1a/;:p;n;bp}' file
বা, পসিক্স সিনট্যাক্সে:
sed -e '/claudio/{s//claudia/;:p' -e 'n;bp' -e '}' file
যে কোন সিড, প্রক্রিয়া উপর কাজ করে শুধুমাত্র অনেক লাইন হিসাবে প্রথম এটি করা প্রয়োজন যেমন claudio, কাজ করে এমনকি যদি claudioপ্রথম লাইন রয়েছে এবং যেমন শুধুমাত্র একটি Regex স্ট্রিং ব্যবহার খাটো।
বিস্তারিত
শুধুমাত্র একটি লাইন পরিবর্তন করতে আপনার কেবল একটি লাইন নির্বাচন করতে হবে ।
ব্যবহার করে একটি 1,/claudio/ (আপনার প্রশ্ন থেকে) নির্বাচন করে:
- প্রথম লাইন থেকে (নিঃশর্ত)
- থেকে পরবর্তী লাইন স্ট্রিং ধারণ করে
claudio।
$ cat file
claudio 1
antonio 2
claudio 3
michele 4
$ sed -n '1,/claudio/{p}' file
claudio 1
antonio 2
claudio 3
যে কোনও লাইন রয়েছে তা নির্বাচন করতে claudio, ব্যবহার করুন:
$ sed -n `/claudio/{p}` file
claudio 1
claudio 3
এবং ফাইলটিতে কেবল প্রথমটি নির্বাচন করতে claudio, ব্যবহার করুন:
sed -n '/claudio/{p;q}' file
claudio 1
তারপরে, আপনি কেবলমাত্র সেই লাইনে একটি প্রতিস্থাপন করতে পারেন:
sed '/claudio/{s/claudio/claudia/;q}' file
claudia 1
যা লাইনে কেবলমাত্র রেগেক্স ম্যাচের প্রথম ঘটনাটি বদলে দেবে , এমনকি সেখানে একের বেশি থাকতে পারে প্রথম লাইনে যা রেজেক্সের সাথে মেলে।
অবশ্যই, /claudio/রেজেক্স এটিকে সরল করা যেতে পারে:
$ sed '/claudio/{s//claudia/;q}' file
claudia 1
এবং, তখন, কেবলমাত্র অনুপস্থিত যা হ'ল অন্য সমস্ত লাইন অপরিশোধিত মুদ্রণ করা:
sed '/claudio/{s//claudia/;:p;n;bp}' file
info sed: (0,/REGEXP/: 0 একটি লাইন নম্বর মত একটি ঠিকানা স্পেসিফিকেশন ব্যবহার করা যেতে পারে0,/REGEXP/, যাতেsedপ্রথম ইনপুট লাইন খুব RegExp মেলানোর চেষ্টা করবে অন্য কথায়,।0,/REGEXP/হয় অনুরূপ1,/REGEXP/, যদি এডিডিআর 2 ইনপুটটির প্রথম লাইনের সাথে মেলে তবে 0, / আরইজিইএক্সপি / ফর্ম এটি পরিসীমাটি শেষ করার জন্য বিবেচনা করবে, যেখানে 1, / আরজিইএক্সপি / ফর্মটি তার পরিসীমাটির শুরুতে মিলবে এবং তাই ব্যাপ্তিটির স্প্যান তৈরি করবে আপ দ্বিতীয় রেগুলার এক্সপ্রেশন) এর সংঘটন