با استفاده از sed یک اسکریپت بنویسید که فرض می‌شود در هر خط فایل ورودی یک آدرس ایمیل وجود دارد و تنها نام کاربری (بخش قبل از @) را استخراج و در فایل خروجی ذخیره کند.

22.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:38

0.0

می‌توانید از sed با الگوهای منظم برای حذف قسمت بعد از @ استفاده کنید و فقط گروه اول را چاپ کنید. روش ساده: با گزینه -E (یا -r در برخی نسخه‌ها) از عبارت با دامنهٔ گسترده استفاده کنید و با -n جلوی چاپ پیش‌فرض را بگیرید و از /p برای چاپ خط اصلاح‌شده بهره ببرید، سپس خروجی را با > به فایل جدید هدایت کنید. مثال: sed -E -n 's/^([^@]+)@.*$/\1/p' input.txt > output.txt. توجه کنید در برخی سیستم‌ها باید از نگارش پایه و فرمت \( \) و \+ استفاده کنید و از فرار دادن کاراکترها در شل غافل نشوید.

توسط پژوهشگر در 201 روز قبل ساعت 03:38
دسته بندی ها: Bash Scripting Bash Scripting for beginner
nima در 201 روز قبل ساعت 05:43

این دستور sed نام کاربری را از هر خط ایمیل استخراج می‌کند و فقط قسمت قبل از @ را چاپ می‌کند. با گزینه -n چاپ را خاموش می‌کند و با استفاده از \1 نتیجه را چاپ می‌کند. در برخی سیستم‌ها باید از -E یا -r استفاده کرد و نگارش‌های مختلف sed ممکن است فرار کاراکترها را به شیوه‌ای متفاوت مدیریت کند. توجه کنید خطوطی که فاقد @ هستند یا دارای فرمت غیرمعمول‌اند خروجی نامشخصی خواهند داشت؛ اگر این رفتار را نمی‌خواهید، می‌توانید از awk یا اضافه‌کردن شرط‌های اضافی استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری