انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: استفاده از دستور egrep  (دفعات بازدید: 421 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین ghasemi.hussein

  • Full Member
  • *
  • ارسال: 110
  • جنسیت : پسر
استفاده از دستور egrep
« : 27 امرداد 1397، 02:39 ب‌ظ »
سلام
می خوام با استفاده از دستور egrep از بین کلماتی که از a-z تشکیل شدن، کلمات ۵ حرفی رو جدا کنم. اینجور که از آموزش ها فهمیدم باید دستور زیر رو تایپ کنم:
egrep '[a-z]{5}' file adress
اما این دستور کار نمی کنه و همه ی مقادیر موجود در فایل رو به عنوان خروجی میده.

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : استفاده از دستور egrep
« پاسخ #1 : 27 امرداد 1397، 03:41 ب‌ظ »
سلام
دستور شما کلماتی با بیش از 5 حرف رو نیشون می ده. ولی اگه دقیقا 5 حرف رو بخواین با grep جدا کنین ، می تونین از این دستورات استفاده کنین :

egrep '^[a-z]{5}$' FILENAME
egrep -x '[a-z]{5}' FILENAME

پ.ن:به جای egrep می تونین از grep -E هم استفاده کنین.

آفلاین ghasemi.hussein

  • Full Member
  • *
  • ارسال: 110
  • جنسیت : پسر
پاسخ : استفاده از دستور egrep
« پاسخ #2 : 28 امرداد 1397، 11:13 ق‌ظ »
ممنون
دستور شما درست کار می کنه. اما متوجه نمی شم که چرا دستور من اشتباهه. طبق توضیحات توی man وقتی از {N} عبارت استفاده می کنی یعنی دقیقاعبارت هایی رو بده که n بار پترن در اونها صادقه. درست متوجه شدم؟

آفلاین Ma$oud

  • Sr. Member
  • *
  • ارسال: 293
  • جنسیت : پسر
پاسخ : استفاده از دستور egrep
« پاسخ #3 : 29 امرداد 1397، 12:07 ب‌ظ »
ممنون
دستور شما درست کار می کنه. اما متوجه نمی شم که چرا دستور من اشتباهه. طبق توضیحات توی man وقتی از {N} عبارت استفاده می کنی یعنی دقیقاعبارت هایی رو بده که n بار پترن در اونها صادقه. درست متوجه شدم؟

به کاراکتر های "^" , "$" در ابتدا و انتهای regex دقت کن!

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : استفاده از دستور egrep
« پاسخ #4 : 30 امرداد 1397، 01:26 ق‌ظ »
ممنون
دستور شما درست کار می کنه. اما متوجه نمی شم که چرا دستور من اشتباهه. طبق توضیحات توی man وقتی از {N} عبارت استفاده می کنی یعنی دقیقاعبارت هایی رو بده که n بار پترن در اونها صادقه. درست متوجه شدم؟
خواهش می کنم

همون طور که مسعود جان گفتن اگه می خواین دقیقا n با در اون پترن صدق می کنن باید از ^ و $ استفاده کنین و یا از سوییچ x :
       -x, --line-regexp
              Select only those matches that exactly match the  whole  line.   For  a  regular  expression
              pattern, this is like parenthesizing the pattern and then surrounding it with ^ and $.