انڈروئد

لینکس میں گریپ کمانڈ (فائلوں میں متن ڈھونڈیں)

سوا - غابة المعمورة تواجه خطر الاندثار

سوا - غابة المعمورة تواجه خطر الاندثار

فہرست کا خانہ:

Anonim

لینکس میں سب سے زیادہ طاقتور اور عام طور پر استعمال ہونے والی کمانڈوں میں سے ایک grep کمانڈ جو "عالمی باقاعدہ اظہار پرنٹ" کے لئے کھڑا ہے۔

گریپ ان لائنوں کیلئے ایک یا زیادہ ان پٹ فائلوں کی تلاش کرتی ہے جو کسی نمونہ سے مماثل ہوتی ہیں اور ہر مماثل لائن کو معیاری آؤٹ پٹ پر لکھ دیتی ہیں۔ اگر کسی فائل کی وضاحت نہیں کی جاتی ہے تو ، grep معیاری ان پٹ سے پڑھتا ہے ، جو عام طور پر کسی اور کمانڈ کا نتیجہ ہوتا ہے۔

اس ٹیوٹوریل میں ، ہم آپ کو عملی مثالوں کے ذریعہ grep کمانڈ کو کس طرح استعمال کریں گے اور جی این یو کے عام طور پر عام اختیارات کے بارے میں تفصیلی وضاحت کے ذریعے آپ کو دکھائیں گے۔

گریپ کمانڈ ترکیب

grep کمانڈ کو کس طرح استعمال کریں اس میں جانے سے پہلے ، آئیے بنیادی نحو کا جائزہ لے کر شروع کریں۔

grep یوٹیلٹی اظہارات مندرجہ ذیل شکل اختیار کرتے ہیں:

grep PATTERN

مربع بریکٹ میں آئٹمز اختیاری ہیں۔

  • OPTIONS - زیرو یا اس سے زیادہ اختیارات۔ گریپ بہت سارے اختیارات مہیا کرتا ہے جو اس کے طرز عمل کو کنٹرول کرتے ہیں۔ PATTERN - تلاش کا نمونہ۔ FILE - زیرو یا زیادہ ان پٹ فائل کے نام۔

فائل کو تلاش کرنے کے قابل ہونے کے ل the ، کمانڈ چلانے والے صارف کے پاس فائل تک پڑھنا ضروری ہے۔

فائلوں میں اسٹرنگ کی تلاش میں grep کا استعمال کیسے کریں

grep کمانڈ کا سب سے بنیادی استعمال کسی فائل میں اسٹرنگ (ٹیکسٹ) تلاش کرنا ہے۔

مثال کے طور پر ، /etc/passwd فائل کی لائنوں کو ڈسپلے کرنے کے لئے ، جس میں سٹرنگ bash آپ درج ذیل کمانڈ استعمال کرسکتے ہیں۔

grep bash /etc/passwd

آؤٹ پٹ کو کچھ اس طرح نظر آنا چاہئے:

root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash

اگر اسٹرنگ میں خالی جگہیں شامل ہیں تو ، آپ کو اسے ایک یا دوہرے حوالوں سے منسلک کرنے کی ضرورت ہے:

grep "Gnome Display Manager" /etc/passwd

الٹا میچ (خارج)

ان لائنوں کو ظاہر کرنے کے لئے جو نمونہ سے مماثل نہیں ہیں ، -v (یا --invert-match ) آپشن کا استعمال کریں۔

مثال کے طور پر /etc/passwd فائل کی لائنوں کو ڈسپلے کرنے کے لئے جس میں سٹرنگ nologin نہیں ہوتا ہے آپ درج ذیل کمانڈ استعمال کرسکتے ہیں:

grep -v nologin /etc/passwd

root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash

کمانڈ آؤٹ پٹ میں اسٹرنگ کی تلاش میں گریپ کا استعمال کیسے کریں

ان پٹ فائلوں کی وضاحت کرنے کے بجائے ، آپ کسی اور کمانڈ کی آؤٹ پٹ کو grep پائپ کرسکتے ہیں ، اور پھر صرف دیئے گئے نمونے سے ملنے والی لائنیں ظاہر کرسکتے ہیں۔

مثال کے طور پر ، یہ جاننے کے ل your کہ آپ کے سسٹم پر کن کن عملوں کو چل رہا ہے بطور صارف www-data آپ مندرجہ ذیل ps کمانڈ استعمال کرسکتے ہیں۔

ps -ef | grep www-data

www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process

آپ آن کمانڈ میں ایک سے زیادہ پائپوں کو بھی زنجیر بنا سکتے ہیں۔ جیسا کہ آپ اوپر آؤٹ پٹ میں دیکھ سکتے ہیں کہ ایک لائن بھی ہے جس میں grep پروسیس شامل ہے۔ اگر آپ نہیں چاہتے ہیں کہ اس لائن کو دکھایا جائے تو ذیل میں دکھائے جانے والے آؤٹ پٹ کو کسی اور grep مثال میں منتقل کریں۔

ps -ef | grep www-data | grep -v grep

www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process

پنراورتی تلاش

ایک پیٹرن کو بار بار ڈھونڈنے کے لئے ، -r آپشن (یا --recursive ) استعمال کریں۔ اس سے مخصوص ڈائریکٹری میں موجود تمام فائلوں کو تلاش کیا جا، گا ، اور ان متناسب علامتوں کو چھوڑ دیا جائے گا جن کا بار بار سامنا کرنا پڑتا ہے۔ تمام علامتی روابط کی پیروی کرنے کے لئے ، -R آپشن (یا --dereference-recursive ) کا استعمال کریں۔

مندرجہ ذیل مثال میں ہم /etc ڈائریکٹری میں موجود تمام فائلوں میں اسٹرنگ linuxize.com تلاش کر رہے ہیں۔

grep -r linuxize.com /etc

کمانڈ فائل کے پورے راستے سے ماقبل مماثل لائنوں کو پرنٹ کرے گی۔

/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;

اگر اس کی بجائے -r استعمال کرتے ہیں -R آپشن grep تمام علامتی روابط کی پیروی کرے گا:

grep -R linuxize.com /etc

آؤٹ پٹ کی آخری لائن دیکھیں۔ مذکورہ بالا مثال میں وہ لائن نہیں چھاپی گئی ہے کیونکہ نجنکس کی sites-enabled ڈائرکٹری کے اندر موجود فائلیں sites-available ڈائرکٹری کے اندر موجود فائلوں کو ترتیب دینے کی علامت sites-available ۔

/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;

صرف فائل کا نام دکھائیں

ڈیفالٹ grep آؤٹ پٹ کو دبانے اور مماثل پیٹرن والی فائلوں کے ناموں کو پرنٹ کرنے کے --files-with-matches ، آپ -l (یا --files-with-matches ) آپشن استعمال کرسکتے ہیں۔

مثال کے طور پر موجودہ ورکنگ ڈائرکٹری میں .conf ساتھ ختم ہونے والی تمام فائلوں کو linuxize.com نام صرف پرنٹ کرنا جو linuxize.com ٹائپ پر مشتمل ہے:

grep -l linuxize.com *.conf

آؤٹ پٹ کچھ اس طرح نظر آئے گی:

tmux.conf haproxy.conf

-l آپشن عام طور پر -l کرنے والے آپشن کے ساتھ مل کر استعمال ہوتا ہے۔

grep -Rl linuxize.com /tmp

کیس غیر حساس تلاش کریں

ڈیفالٹ کے مطابق ، grep کمانڈ معاملہ حساس ہے۔ اس کا مطلب یہ ہے کہ بڑے اور چھوٹے حرفوں کو الگ الگ سمجھا جاتا ہے۔

تلاش کرتے وقت کیس کو نظر انداز کرنے کے لئے ، -i آپشن (یا --ignore-case ) استعمال کریں۔

مثال کے طور پر ، جب کسی اختیار کے بغیر Zebra تلاش کرتے وقت ، مندرجہ ذیل کمانڈ میں کوئی آؤٹ پٹ نہیں دکھائے گا یعنی ملاپ والی لائنیں ہیں:

grep Zebra /usr/share/words

لیکن اگر آپ -i آپشن کا استعمال کرکے کیس غیر حساس تلاش کرتے ہیں تو ، یہ اوپری اور لوئر دونوں حروف سے مماثل ہوگا:

grep -i Zebra /usr/share/words

"زیبرا" کی وضاحت کرنا اس سلسلے کے لئے "زیبرا" ، "زیبرا" یا اپر اور لوئر کیس خط کے کسی دوسرے مجموعہ سے مماثل ہوگا۔

zebra zebra's zebras

مکمل الفاظ کی تلاش کریں

"gnu" کی تلاش کرتے وقت ، grep ان لائنوں کو بھی grep گا جہاں "gnu" بڑے الفاظ میں سرایت کیا جاتا ہے ، جیسے "سگناس" یا "میگنم"۔

grep gnu /usr/share/words

cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut

صرف ان لائنوں کو واپس کرنے کے لئے جہاں مخصوص تار پوری لفظ ہے (غیر --word-regexp سے منسلک) ، -w (یا --word-regexp ) آپشن کا استعمال کریں۔

الفاظ کے حرفوں میں حرفی حرف (ا ، az ، AZ اور 0-9 ) اور انڈر سکور ( _ ) شامل ہیں۔ دوسرے تمام کرداروں کو غیر لفظی حرف سمجھا جاتا ہے۔

grep -w gnu /usr/share/words

gnu

لائن نمبر دکھائیں

ان لائنوں کی تعداد ظاہر کرنے کے لئے جن میں ایک تار شامل ہے جو ایک نمونہ سے میل کھاتا ہے ، -n (یا --line-number ) آپشن کا استعمال کریں۔ جب یہ آپشن استعمال کریں گے تو ، grep میچ کو اس لائن نمبر کے ساتھ ماقبل معیاری آؤٹ پٹ پرنٹ کرے گا جس پر اس کا نمبر ملا تھا۔

مثال کے طور پر ، ملاوٹ لائن نمبر کے ساتھ صیغہ شدہ اسٹرنگ bash پر مشتمل /etc/services فائل سے لائنوں کو ظاہر کرنے کے لئے آپ مندرجہ ذیل کمانڈ استعمال کرسکتے ہیں:

grep -n 10000 /etc/services

ذیل میں آؤٹ پٹ ہمیں دکھاتی ہے کہ میچ 10423 اور 10424 لائنوں پر پائے جاتے ہیں۔

10423:ndmp 10000/tcp 10424:ndmp 10000/udp

میچ گنیں

معیاری آؤٹ پٹ کے لئے مماثل لائنوں کی گنتی کو پرنٹ کرنے کے لئے ، -c (یا --count ) آپشن کا استعمال کریں۔

ذیل کی مثال میں ، ہم ان اکاؤنٹوں کی تعداد گن رہے ہیں جن میں /usr/bin/zsh کے بطور شیل شامل ہیں۔

grep -c '/usr/bin/zsh' /etc/passwd

4

متعدد اسٹرنگ (پیٹرن) کے لئے تلاش کریں

OR آپریٹر کا استعمال کرتے ہوئے دو یا زیادہ تلاش کے نمونوں میں شامل ہوسکتے ہیں.

ڈیفالٹ کے ذریعہ ، grep اس نمونہ کی بنیادی باقاعدہ اظہار کی ترجمانی کرتا ہے جہاں میٹا-حروف جیسے | اپنا خاص معنی کھو دیں ، اور ان کی پچھلے حصوں کو استعمال کرنا چاہئے۔

ذیل کی مثال میں ہم نگینکس لاگ انر فائل میں fatal ، error اور critical الفاظ کے تمام واقعات تلاش کر رہے ہیں۔

grep 'fatal\|error\|critical' /var/log/nginx/error.log

grep -E 'fatal|error|critical' /var/log/nginx/error.log

پرسکون وضع

--quiet (یا --quiet ) --quiet کو ٹرمینل (معیاری آؤٹ پٹ) پر کچھ نہ لکھنے کے لئے کہتا ہے۔ اگر کوئی میچ مل جاتا ہے تو ، کمانڈ کی حیثیت 0 ساتھ باہر آجائے گی۔ یہ کارآمد ہے جب شیل اسکرپٹس میں grep کا استعمال کرتے ہوئے جہاں آپ یہ چیک کرنا چاہتے ہیں کہ آیا فائل میں اسٹرنگ موجود ہے یا نہیں اور اس کے نتیجے پر منحصر ہے کہ کوئی خاص عمل انجام دے۔

if بیان میں ٹیسٹ کمانڈ کے بطور پرسکون وضع میں grep کو استعمال کرنے کی ایک مثال یہ ہے:

if grep -q PATTERN filename then echo pattern found else echo pattern not found fi

بنیادی باقاعدہ اظہار

GNU Grep میں دو باقاعدہ اظہار نمایاں سیٹ ہیں ، بنیادی اور توسیعی۔ ڈیفالٹ کے ذریعہ ، grep بنیادی باقاعدہ اظہار کے طور پر پیٹرن کی ترجمانی کرتا ہے۔

جب بنیادی باقاعدگی سے اظہار رائے کے موڈ میں استعمال ہوتا ہے تو ، میٹا حرفوں کے سوا باقی تمام حرف دراصل باقاعدگی سے اظہار ہوتے ہیں جو خود سے ملتے ہیں۔ ذیل میں عام طور پر استعمال ہونے والے میٹا کرداروں کی ایک فہرست ہے۔

  • لکیر کے آغاز میں اظہار کے مطابق میچ کیلئے ^ (کیریٹ) کا نشان استعمال کریں۔ مندرجہ ذیل مثال میں ، تار the ^kangaroo صرف اس صورت میں مماثل ہوگی جب یہ لائن کے بالکل شروع میں واقع ہو۔

    grep "^kangaroo" file.txt

    کسی لکیر کے آخر میں اظہار کے ساتھ میچ کرنے کے لئے $ (ڈالر) کی علامت کا استعمال کریں۔ مندرجہ ذیل مثال میں ، تار kangaroo$ only صرف اس صورت میں مماثل ہوگی جب یہ لائن کے بالکل آخر میں واقع ہو۔

    grep "kangaroo$" file.txt

    استعمال کریں . (مدت) علامت کسی ایک حرف سے ملنے کے لئے۔ مثال کے طور پر ، kan شروع ہونے والی کسی بھی چیز سے میچ کرنے کے لئے اس کے دو حرف ہوتے ہیں اور اسٹرنگ roo ختم ہوتے ہیں ، آپ مندرجہ ذیل نمونہ استعمال کرسکتے ہیں۔

    grep "kan..roo" file.txt

    استعمال کریں (بریکٹ) بریکٹ میں منسلک کسی ایک حرف سے ملنے کے لئے۔ مثال کے طور پر ، ان لائنوں کو تلاش کریں جن میں accept یا " accent ، آپ مندرجہ ذیل نمونہ استعمال کرسکتے ہیں:

    grep "accet" file.txt

    استعمال کریں (بریکٹ) بریکٹ میں منسلک کسی ایک حرف سے ملنے کے لئے۔ مندرجہ ذیل نمونہ co(any_letter_except_l)a ، جیسے coca ، cobalt اور اسی طرح کے تاروں کے کسی بھی مجموعہ سے میل کھاتا ہے ، لیکن cola پر مشتمل لائنوں سے میل نہیں کھاتا ہے ،

    grep "coa" file.txt

اگلے کردار کے خاص معنی سے بچنے کے ل \ ، bac (بیک سلیش) علامت استعمال کریں۔

توسیعی باقاعدہ تاثرات

توسیعی باقاعدہ اظہار کی حیثیت سے اس نمونہ کی ترجمانی کرنے کے لئے ، -E (یا --extended-regexp ) آپشن کا استعمال کریں۔ توسیع شدہ باقاعدہ تاثرات میں مزید پیچیدہ اور طاقتور تلاش کے نمونوں کو تخلیق کرنے کے لئے اضافی میٹا حرف کے ساتھ ساتھ تمام بنیادی میٹا-حرف بھی شامل ہوتے ہیں۔ ذیل میں کچھ مثالیں ہیں:

  • دی گئی فائل سے تمام ای میل پتوں سے ملائیں اور نکالیں:

    grep -E -o "\b+@+\.{2, 6}\b" file.txt

    دی گئی فائل سے تمام درست IP پتے ملاپ کریں اور نکالیں:

    grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt

-o آپشن صرف مماثل سٹرنگ پرنٹ کرنے کے لئے استعمال ہوتا ہے۔

میچ سے پہلے لائنز پرنٹ کریں

لائنوں کی مماثلت سے قبل لائنوں کی ایک مخصوص تعداد کو پرنٹ کرنے کے لئے ، -B (یا --before-context ) آپشن کا استعمال کریں۔

مثال کے طور پر ، لائنوں کو ملاپ سے پہلے سر فہرست سیاق و سباق کی پانچ لائنوں کو ظاہر کرنے کے لئے ، آپ درج ذیل کمانڈ استعمال کریں گے۔

grep -B 5 root /etc/passwd

میچ کے بعد لائنز پرنٹ کریں

ملاپ کی لکیروں کے بعد لائنوں کی ایک مخصوص تعداد کو پرنٹ کرنے کے لئے ، -A (یا --after-context ) آپشن کا استعمال کریں۔

مثال کے طور پر لائنوں کے ملاپ کے بعد ٹریلنگ سیاق و سباق کی پانچ لائنیں ظاہر کرنے کے لئے ، آپ مندرجہ ذیل کمانڈ استعمال کریں گے۔

grep -A 5 root /etc/passwd

نتیجہ اخذ کرنا

grep کمانڈ آپ کو فائلوں کے اندر کا نمونہ تلاش کرنے کی اجازت دیتا ہے۔ اگر کوئی میچ ملا تو ، گریپ مخصوص نمونوں پر مشتمل لائنوں کو پرنٹ کرے گا۔

گریپ کے بارے میں جاننے کے لئے اور بھی بہت کچھ ہے گرینپ صارف کے دستی صفحے پر۔

گریپ ٹرمینل