من چطور میتونم چندین کلمه یا string را با استفاده از دستور grep فیلتر کنم؟ برای مثال من قصد دارم کلمات word1 ،word2 ،word3 را از داخل یک فایل مشخصی فیلتر کنم. بریم سراغ جواب. دستور grep از پترن های regular expression پشتیبانی میکند و برای سرچ کردن چندین کلمه به صورت زیر عمل میکنیم.
همچنین توصیه میشود مطالعه کنید :
دستور grep در لینوکس به همراه 12 مثال عملی
11 دستور پیشرفته grep در Linux
تفاوت بین Egrep - Grep و Fgrep در لینوکس چیست؟
چطور میتونم چندین patern را با استفاده از دستور grep فیلتر کرد؟
1 - استفاده از single quote در پترن مورد استفاده :
2 - استفاده از regular expression ها به همراه دستور grep :
3 - برای سیستم عامل های unix قدیمی هم از این syntax استفاده کنید :
دیگر syntax ها به صورت زیر میباشد :
برای جستجوی تمام فایل های متنی با استفاده از دستور grep به صورت زیر عمل میکنیم :
برای جستجوی تمام فایل های پایتون با استفاده از دستور grep به این صورت عمل میکنیم :
مثالها
در این مثال، کلمه های warning - error - critical را از مسیر /var/log/messages که لاگ های سیستم در آنجا ذخیره میشوند را جستجو میکنیم :
برای جستجوی فقط کلمه های match شده از آپشن w استفاده کنید :
شما میتوانید syntax بالا را برای جستجوی سه کلمه نادیده بگیرید :
یا
به شما پيشنهاد ميكنيم كه آپشن -i (صرفنظر از حروف بزرگ و كوچك) و --color را همانند مثال زير به دستور پاس دهيد :
نمونه خروجی :
برای جستجوی تمام فایل هایی با پسوند .conf در مسیر /ete/ از دستور زیر استفاده کنید :
برای جستجو دایرکتوریها با تمام محتویات و زیر دایرکتوریهاش به صورت زیر عمل میکنیم :
همچنین توصیه میشود مطالعه کنید :
دستور awk در لینوکس برای جستجو و فیلتر کردن عبارات، کلمه و ... (بخش اول)
10 دستور مفید برای Chaining Operators در لینوکس
موفق باشید.
همچنین توصیه میشود مطالعه کنید :
دستور grep در لینوکس به همراه 12 مثال عملی
11 دستور پیشرفته grep در Linux
تفاوت بین Egrep - Grep و Fgrep در لینوکس چیست؟
چطور میتونم چندین patern را با استفاده از دستور grep فیلتر کرد؟
1 - استفاده از single quote در پترن مورد استفاده :
کد PHP:
grep 'pattern*' file1 file2
کد PHP:
egrep 'pattern1|pattern2' *.py
کد PHP:
grep -e pattern1 -e pattern2 *.pl
دیگر syntax ها به صورت زیر میباشد :
کد PHP:
grep 'word1\|word2\|word3' /path/to/file
کد PHP:
grep 'word*' *.txt
کد PHP:
grep 'wordA*'\''wordB' *.py
grep -E 'word1|word2' *.doc
grep -e string1 -e string2 *.pl
egrep "word1|word2" *.c
مثالها
در این مثال، کلمه های warning - error - critical را از مسیر /var/log/messages که لاگ های سیستم در آنجا ذخیره میشوند را جستجو میکنیم :
کد PHP:
$ grep 'warning\|error\|critical' /var/log/messages
کد PHP:
$ grep -w 'warning\|error\|critical' /var/log/messages
کد PHP:
$ egrep -w 'warning|error|critical' /var/log/messages
کد PHP:
$ grep -e 'warning|error|critical' /var/log/messages
کد PHP:
$ egrep -wi --color 'warning|error|critical' /var/log/messages
کد PHP:
[Jan 26 08:17:59] WARNING[6023][C-00001843] res_odbc.c: Connection is down attempting to reconnect...
[Jan 26 11:10:48] WARNING[19093][C-0000185f] chan_sip.c: Purely numeric hostname (550), and not a peer--rejecting!
[Jan 26 11:10:48] WARNING[19093][C-0000185f] app_dial.c: Unable to create channel of type 'sip' (cause 20 - Subscriber absent)
[Jan 28 00:07:19] WARNING[24239][C-00001885] res_odbc.c: SetConnectAttr (Txn isolation) returned an error: HY000: [MySQL][ODBC 5.1 Driver]MySQL server has gone away
[Jan 28 00:07:19] WARNING[24239][C-00001885] res_odbc.c: SQL Execute returned an error -1: 08S01: [MySQL][ODBC 5.1 Driver][mysqld-5.5.53]MySQL server has gone away (65)
[Jan 28 00:07:19] WARNING[24239][C-00001885] res_odbc.c: SQL Execute error -1! Verifying connection to asterisk [asterisk]...
[Jan 28 00:07:19] WARNING[24239][C-00001885] res_odbc.c: Connection is down attempting to reconnect...
[Jan 28 07:41:10] WARNING[2026] chan_sip.c: Retransmission timeout reached on transmission 6c504dda-ab3e007a-d8bc35c6-1a91757a@172.16.1.101 for seqno 102 (Critical Response) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
[Jan 28 09:01:04] WARNING[32285][C-000018b6] chan_sip.c: Purely numeric hostname (200), and not a peer--rejecting!
[Jan 28 09:01:04] WARNING[32285][C-000018b6] app_dial.c: Unable to create channel of type 'sip' (cause 20 - Subscriber absent)
کد PHP:
# egrep -wi --color 'foo|bar' /etc/*.conf
کد PHP:
# egrep -Rwi --color 'foo|bar' /etc/
همچنین توصیه میشود مطالعه کنید :
دستور awk در لینوکس برای جستجو و فیلتر کردن عبارات، کلمه و ... (بخش اول)
10 دستور مفید برای Chaining Operators در لینوکس
موفق باشید.