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, / আরজিইএক্সপি / ফর্মটি তার পরিসীমাটির শুরুতে মিলবে এবং তাই ব্যাপ্তিটির স্প্যান তৈরি করবে আপ দ্বিতীয় রেগুলার এক্সপ্রেশন) এর সংঘটন