یک اسکریپت bash بنویسید که یک فایل متنی را میگیرد و تمام آدرسهای ایمیل معتبر موجود در فایل را با استفاده از عبارات منظم استخراج و در خروجی چاپ کند.
11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:50 0.0
برای حل این مسئله میتوانید از ابزارهای خط فرمان مانند grep (با گزینه -E و -o)، sed یا awk استفاده کنید و یک الگوی regex ساده برای ایمیل مثل [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,} بهکار ببرید. اسکریپت باید نام فایل را از آرگومان ورودی یا stdin دریافت کند، از grep -E -o برای استخراج هر ایمیل استفاده کند و در صورت نیاز با sort -u خروجی یکتا (unique) تولید کند؛ دقت کنید که در شیل کاراکترهای خاص را بهدرستی داخل کوتیشن قرار دهید و برای سنجش از چند فایل نمونه استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این کار با grep -E -o و یک الگوی سادهٔ ایمیل بهخوبی انجام میشود و خروجی را میتوان با sort -u یکتا کرد. با این حال regex ساده ممکن است ایمیلهای معتبر با فرمت غیرمعمول را از دست بدهد یا متنهای بیمعنا را بهعنوان ایمیل تشخیص دهد، پس در پروژههای حساس صحت، استفاده از الگوی RFC 5322 یا نسخهٔ بهبود یافته توصیه میشود. همچنین اطمینان حاصل کنید نام فایل بهدرستی از آرگومان ورودی یا stdin گرفته میشود و کاراکترها بهدرستی در نقل قولها escape شوند. برای فایلهای بزرگ، اجرای pipeline ای مانند grep -E -o ... "$file" | sort -u کارآمد است و در برخی موارد با awk یا sed برای پردازشهای اضافی قابل گسترش است.
گزارش