عبارات منظم یکی از ابزارهای کلیدی برای جستوجو و پردازش متن هستند. در لینوکس، دستورات بسیاری مانند grep، find، locate، less و ویرایشگرهایی مانند vim از regex پشتیبانی میکنند. این مقاله بر فرمهای مطابق استاندارد POSIX تمرکز دارد: عبارات پایه (BRE) و پیشرفته (ERE).
عبارات منظم مجموعهای از نمادها هستند که برای تطابق با الگوهای متنی استفاده میشوند. آنها از wildcardهای شِلی دقیقتر و قدرتمندترند.
grep -h bzip dirlist*.txt| گزینه | توضیح |
|---|---|
| -i | بیتفاوتی نسبت به حروف بزرگ و کوچک |
| -v | نمایش خطوطی که تطابق ندارند |
| -c | شمارش تعداد تطابقها |
| -l / -L | نمایش فایلهایی با / بدون تطابق |
| -n | نمایش شماره خطوط |
| -h | حذف نام فایل از خروجی |
متاکاراکترها شامل ^ $ . [ ] { } * + ? ( ) | هستند. برای جلوگیری از تداخل با شِل، از علامت نقل قول استفاده کنید.
.: تطابق با هر کاراکتر واحد^: تطابق با ابتدای خط$: تطابق با انتهای خطgrep '[bg]zip' dirlist*.txt
grep '[^bg]zip' dirlist*.txt| کلاس | توضیح |
|---|---|
| [:alnum:] | حروف و اعداد |
| [:digit:] | فقط ارقام |
| [:lower:], [:upper:] | حروف کوچک / بزرگ |
| [:space:] | فاصلهها (مثل space، tab) |
برای رفتار یکپارچه، زبان locale را به ASCII تغییر دهید:
export LANG=POSIX|، +، ?، {} و () بدون اسلشgrep -E 'AAA|BBB|CCC' file.txt| نشانگذاری | توضیح |
|---|---|
| ? | صفر یا یک بار تکرار |
| * | صفر یا بیشتر |
| + | حداقل یک بار |
| {n} | دقیقاً n بار |
| {n,m} | بین n تا m بار |
| {n,} | حداقل n بار |
grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$' phonelist.txtfind . -regex '.*[^-_./0-9a-zA-Z].*'locate --regex 'bin/(bz|gz|zip)'less phonelist.txt
/^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$/[0-9]\{3}\) [0-9]\{3\}-[0-9]\{4\}برای فعالسازی برجستهسازی، دستور زیر را بزنید:
:set hlsearchcd /usr/share/man/man1
zgrep -El 'regex|regular expression' *.gzعبارات منظم ابزارهایی پرکاربرد برای جستوجوی دقیق متن در لینوکس هستند. با استفاده از دستورات grep، find، locate، less و vim، میتوانید متنها را فیلتر کنید، دادهها را اعتبارسنجی نمایید و فایلها را با دقت پیدا کنید. تسلط بر BRE و ERE و مفاهیم regex، مسیر پردازش پیشرفته متنی را برایتان هموار میکند.