عبارات منظم یکی از ابزارهای کلیدی برای جستوجو و پردازش متن هستند. در لینوکس، دستورات بسیاری مانند 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.txt
find . -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 hlsearch
cd /usr/share/man/man1
zgrep -El 'regex|regular expression' *.gz
عبارات منظم ابزارهایی پرکاربرد برای جستوجوی دقیق متن در لینوکس هستند. با استفاده از دستورات grep
، find
، locate
، less
و vim
، میتوانید متنها را فیلتر کنید، دادهها را اعتبارسنجی نمایید و فایلها را با دقت پیدا کنید. تسلط بر BRE و ERE و مفاهیم regex، مسیر پردازش پیشرفته متنی را برایتان هموار میکند.