সেড দিয়ে পুরো লাইনটি কীভাবে প্রতিস্থাপন করবেন?


132

ধরুন আমার কাছে লাইনযুক্ত একটি ফাইল আছে

AAA = BBB

এখন আমি তাদের সাথে প্রতিস্থাপন করতে চাই:

AAA = XXX

আমি নিম্নলিখিত হিসাবে এটি করতে পারেন:

সেড "এস / এএএ = বিবিবি / আএ = এক্সএক্সএক্স / জি"

নীচে কয়েকটি লাইনের সাথে আমার একটি ফাইল রয়েছে:

AAA = BBB
AAA = CCC
AAA = DDD
আআ = [অন্য কিছু]

আমি কিভাবে প্রতিস্থাপন করতে পারেন সব এই লাইন aaa=[something]দিয়ে aaa=xxxব্যবহার sed ?


2
[something else]আক্ষরিক পাঠ্য, বা এটি কি কেবল স্থানধারক? সমান চিহ্নের পরে জিনিসটির সম্ভাব্য বিন্যাস কী?
ean5533

এটি একটি রেইজেক্স প্রশ্নটির চেয়ে বেশি কোন উপদ্রব নয়।
saferJo

উত্তর:


217

এটা চেষ্টা কর:

sed "s/aaa=.*/aaa=xxx/g"

4
অভ্যাসের জোর, এই ক্ষেত্রে এটি উপেক্ষা করা যেতে পারে - প্রতিটি ম্যাচ কেবল প্রথম না করে প্রতিস্থাপনের জন্য লাইনটির জন্য এটি বৈশ্বিক প্রতিস্থাপন হিসাবে ব্যবহৃত হয়। এই ক্ষেত্রে যদিও প্রথমটির সাথেই মিলবে .*
জন ডয়েল

1
মাইকেল জে বারবার, gরিজেপেক্সের সমস্ত উদাহরণ প্রতিস্থাপনের সাথে প্রতিস্থাপন করুন
এ-আইভি

116

এটি সম্পাদন করতে আপনি সেডের পরিবর্তন লাইনও ব্যবহার করতে পারেন:

sed -i "/aaa=/c\aaa=xxx" your_file_here

এটি aaa=পরীক্ষায় উত্তীর্ণ যে কোনও লাইন খুঁজে পাবে , যার অর্থ লাইনটিতে অক্ষর রয়েছে aaa=। তারপরে এটি পুরো লাইনটি এএএএক্সএক্সএক্সএকে প্রতিস্থাপন করে। আপনি ^পরীক্ষার শুরুতে একটি যুক্ত করতে পারেন এটি নিশ্চিত করতে যে আপনি কেবল যে লাইনগুলি শুরু করেছিলেন aaa=তা পেয়েছেন তবে এটি আপনার উপর নির্ভর করে।


12
ওএস এক্স এর ব্যাকস্ল্যাশ এবং একটি নতুন লাইন অনুসরণ করা sedদরকার cএবং এটি itোকানো টেক্সটে একটি নতুন লাইন যুক্ত করে না, তবে আপনি উদাহরণস্বরূপ ব্যবহার করতে পারেন $'/aaa=/c\\\naaa=xxx\n'
Lri

@Mr যে বৈশিষ্ট্যটি পরিবর্তন / প্রতিস্থাপনের সেড ডকুমেন্টেশনের উদাহরণ এবং এখানে । টি কথা বলছে।
জিন_উড

এটি যা বলা হয়েছিল তা করার সবচেয়ে কাছাকাছি ... (তবে বহনযোগ্যতার জন্য লির সংস্করণ প্রয়োজন)
গার্ট ভ্যান ডান বার্গ

42

এটার মত:

sed 's/aaa=.*/aaa=xxx/'

আপনি যদি গ্যারান্টি দিতে চান যে aaa=লাইনের শুরুতে রয়েছে, এটি তৈরি করুন:

sed 's/^aaa=.*/aaa=xxx/'

1
আমি যদি aaa = 'xxxx' দিয়ে প্রতিস্থাপন করতে চাই তবে কী হবে। আমি পালানোর চেষ্টা করেছিলাম sed 's/aaa=.*/aaa=\'xxx\'/'কিন্তু এটি >একটি নতুন লাইনে প্রম্পট খুলে ...
নাগেভ



0

এটি আপনার পক্ষে কাজ করতে পারে:

cat <<! | sed '/aaa=\(bbb\|ccc\|ddd\)/!s/\(aaa=\).*/\1xxx/'
> aaa=bbb
> aaa=ccc
> aaa=ddd
> aaa=[something else]
!
aaa=bbb
aaa=ccc
aaa=ddd
aaa=xxx

আমি একটি সুনির্দিষ্ট চেক মনে করি না bbb, cccএবং dddবেশ কি ওপি মনের মধ্যে ছিল হয়।
স্পিনআপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.