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

کمک و پشتیبانی => انجمن عمومی => نویسنده: ghasemi.hussein در 27 امرداد 1397، 02:39 ب‌ظ

عنوان: استفاده از دستور egrep
ارسال شده توسط: ghasemi.hussein در 27 امرداد 1397، 02:39 ب‌ظ
سلام
می خوام با استفاده از دستور egrep از بین کلماتی که از a-z تشکیل شدن، کلمات ۵ حرفی رو جدا کنم. اینجور که از آموزش ها فهمیدم باید دستور زیر رو تایپ کنم:
egrep '[a-z]{5}' file adress
اما این دستور کار نمی کنه و همه ی مقادیر موجود در فایل رو به عنوان خروجی میده.
عنوان: پاسخ : استفاده از دستور egrep
ارسال شده توسط: علی رزم دیده در 27 امرداد 1397، 03:41 ب‌ظ
سلام
دستور شما کلماتی با بیش از 5 حرف رو نیشون می ده. ولی اگه دقیقا 5 حرف رو بخواین با grep جدا کنین ، می تونین از این دستورات استفاده کنین :

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

پ.ن:به جای egrep می تونین از grep -E هم استفاده کنین.
عنوان: پاسخ : استفاده از دستور egrep
ارسال شده توسط: ghasemi.hussein در 28 امرداد 1397، 11:13 ق‌ظ
ممنون
دستور شما درست کار می کنه. اما متوجه نمی شم که چرا دستور من اشتباهه. طبق توضیحات توی man وقتی از {N} عبارت استفاده می کنی یعنی دقیقاعبارت هایی رو بده که n بار پترن در اونها صادقه. درست متوجه شدم؟
عنوان: پاسخ : استفاده از دستور egrep
ارسال شده توسط: Ma$oud در 29 امرداد 1397، 12:07 ب‌ظ
ممنون
دستور شما درست کار می کنه. اما متوجه نمی شم که چرا دستور من اشتباهه. طبق توضیحات توی man وقتی از {N} عبارت استفاده می کنی یعنی دقیقاعبارت هایی رو بده که n بار پترن در اونها صادقه. درست متوجه شدم؟

به کاراکتر های "^" , "$" در ابتدا و انتهای regex دقت کن!
عنوان: پاسخ : استفاده از دستور egrep
ارسال شده توسط: علی رزم دیده در 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 $.