আমি এমন একটি মেলবক্স ফাইল পার্স করছি যা ই-মেইল সার্ভারের প্রতিবেদনগুলি অসফলভাবে বিতরণ করা ইমেলটির জন্য সঞ্চয় করে। আমি খারাপ ই-মেইল ঠিকানাগুলি বের করতে চাই, যাতে আমি সেগুলি সিস্টেম থেকে সরিয়ে ফেলি। লগ ফাইলটি দেখতে এমন দেখাচ্ছে:
...some content...
The mail system
<slavicatomic118@hotmail.com>: host mx1.hotmail.com[65.54.188.94] said: 550
Requested action not taken: mailbox unavailable (in reply to RCPT TO
command)
...some content...
The mail system
<oki88@optimumpro.net>: host viking.optimumpro.net[79.101.51.82] said: 550
Unknown user (in reply to RCPT TO command)
...some content...
The mail system
<sigirna_luka@yahoo.com>: host mta5.am0.yahoodns.net[74.6.140.64] said: 554
delivery error: dd This user doesn't have a yahoo.com account
(sigirna_luka@yahoo.com) [0] - mta1172.mail.sk1.yahoo.com (in reply to end
of DATA command)
...etc.
ই-মেল ঠিকানাটি "দ্য মেল সিস্টেম" সহ একটি লাইনের পরে 2 লাইন আসে। এরকম গ্রেপ ব্যবহার করা আমাকে "দ্য মেল সিস্টেম" লাইন এবং পরবর্তী দুটি লাইন দেয়:
grep -A 2 "The mail system" mbox_file
তবে এই আউটপুট থেকে কীভাবে "দ্য মেল সিস্টেম" লাইন এবং দ্বিতীয় খালি লাইনটি সরিয়ে ফেলতে হয় তা আমি জানি না। আমি অনুমান করি যে এটি করার জন্য আমি পিএইচপি / পার্ল / পাইথন স্ক্রিপ্ট লিখতে পারি, তবে আমি আশ্চর্য হয়েছি যদি এটি গ্রেপ বা অন্য কোনও মানক সরঞ্জাম দিয়ে সম্ভব কিনা। আমি-বি প্যারামিটারে নেতিবাচক অফসেট দেওয়ার চেষ্টা করেছি:
grep -A 2 -B -2 "The mail system" mbox_file
তবে গ্রেপ অভিযোগ করেছেন:
grep: -2: invalid context length argument
গ্রেপ দিয়ে এটি করার কোনও উপায় আছে?