سسٹم ایڈمنز کے لیے 30 گریپ کی مثالیں۔

30 Grep Examples System Admins



آپ یونیکس اور یونکس جیسے آپریٹنگ سسٹم کے جانوروں کے دماغ کے اندر موجود گریپ کو تلاش کرسکتے ہیں۔ یہ ایک بنیادی پروگرام ہے جو پیٹرن میچنگ کے لیے استعمال ہوتا ہے اور یہ 70 کی دہائی میں باقی UNIX ٹول کے ساتھ لکھا گیا تھا جسے ہم جانتے ہیں اور پیار کرتے ہیں (یا نفرت کرتے ہیں)۔

جبکہ رسمی زبانوں اور باقاعدہ تاثرات کے بارے میں سیکھنا ایک دلچسپ موضوع ہے۔ گریپ سیکھنا اس میں ریجیکس کے مقابلے میں بہت زیادہ ہے۔ اس کے ساتھ شروع کرنے کے لیے اور گریپ کی خوبصورتی اور خوبصورتی کو دیکھنے کے لیے آپ کو پہلے کچھ حقیقی دنیا کی مثالیں دیکھنے کی ضرورت ہے۔







مثالیں جو آسان ہیں اور آپ کی زندگی کو تھوڑا آسان بناتی ہیں۔ یہاں 30 ایسے گریپ عام استعمال کے معاملات اور اختیارات ہیں۔



1. ps aux | گریپ

ps aux تمام عمل اور ان سے وابستہ pids کی فہرست دیتا ہے۔ لیکن اکثر یہ فہرست انسان کے معائنے کے لیے بہت لمبی ہوتی ہے۔ آؤٹ پٹ کو گریپ کمانڈ میں پائپ کرنا آپ ایک خاص ایپلی کیشن کو ذہن میں رکھتے ہوئے چلنے والے عمل کی فہرست بنا سکتے ہیں۔ مثال کے طور پر یہ sshd یا nginx یا httpd ہوسکتا ہے۔



# ps سے | گریپ ایس ایس ایچ ڈی
جڑ400۔ 0.0 0.2۔ 69944۔ 5624۔؟ ایس ایس17۔:47۔ : 00۔/usr/sbin/sshd-ڈی
جڑ1076۔ 0.2۔ 0.3۔ 95204۔ 6816۔؟ ایس ایس18۔:29۔ : 00 sshd: جڑ۔۔پوائنٹس/
جڑ1093۔ 0.0 0.0 12784۔ 932۔پوائنٹس/ایس+۔18۔:29۔ : 00۔گرفتsshd

2. اپنے IP پتے پکڑنا۔

زیادہ تر آپریٹنگ سسٹمز میں آپ اپنے تمام نیٹ ورک انٹرفیس اور آئی پی کو جو کہ اس انٹرفیس کو تفویض کیا گیا ہے ifconfig یا ip addr کمانڈ کا استعمال کر کے درج کر سکتے ہیں۔ یہ دونوں احکامات بہت سی اضافی معلومات حاصل کریں گے۔ لیکن اگر آپ صرف IP ایڈریس پرنٹ کرنا چاہتے ہیں (شیل اسکرپٹس کے لیے کہیں) تو آپ نیچے دی گئی کمانڈ استعمال کر سکتے ہیں۔





$ip addr | گرفتinet| عجیب '{$ 2 پرنٹ کریں } '
$ip addr | گرفت -میںinet| عجیب '{$ 2 پرنٹ کریں } ' #لائنوں کے لیے صرف inet نہیں inet6 (IPv6)

ip addr کمانڈ کو تمام تفصیلات مل جاتی ہیں (بشمول IP پتے) ، پھر اسے دوسری کمانڈ grep inet پر پائپ کیا جاتا ہے جو ان میں صرف inet والی لائنیں نکالتا ہے۔ اس کے بعد اس کو اسٹاپ پرنٹ بیان میں پائپ کیا جاتا ہے جو ہر سطر میں دوسرا لفظ چھاپتا ہے (اسے سیدھے الفاظ میں)

پی ایس: آپ یہ گریپ کے بغیر بھی کر سکتے ہیں اگر آپ کو اچھی طرح معلوم ہو۔



3. SSH کی ناکام کوششوں کو دیکھنا۔

اگر آپ کے پاس انٹرنیٹ کا سامنا کرنے والا سرور ہے ، پبلک آئی پی کے ساتھ ، اس پر مسلسل SSH کوششوں سے بمباری کی جائے گی اور اگر آپ صارفین کو پاس ورڈ پر مبنی SSH رسائی کی اجازت دیتے ہیں (ایسی پالیسی جس کی میں سفارش نہیں کروں گا) آپ اس طرح کی تمام ناکام کوششیں دیکھ سکتے ہیں مندرجہ ذیل گریپ کمانڈ:

# بلی /var/log/auth.log | گریپ فیل
نمونہ باہر ڈال دیا۔
دسمبر 16۔:بیس: 03 ڈیبین ایس ایس ایچ ڈی۔[509۔]: ناکام پاس ورڈکے لیے192.168.0.100 پورٹ سے جڑ۔52374۔ssh2
دسمبر 16۔:بیس: 07 ڈیبین ایس ایس ایچ ڈی۔[509۔]: ناکام پاس ورڈکے لیے192.168.0.100 پورٹ سے جڑ۔52374۔ssh2
دسمبر 16۔:بیس:گیارہڈیبین ایس ایس ایچ ڈی[509۔]: ناکام پاس ورڈکے لیے192.168.0.100 پورٹ سے جڑ۔52374۔ssh2

4. یونپ کو پائپنگ گریپ۔

بعض اوقات ، گریپ بہت ساری معلومات فراہم کرے گا۔ مندرجہ بالا مثال میں ، ایک آئی پی آپ کے سسٹم میں داخل ہونے کی کوشش کر رہا ہے۔ زیادہ تر معاملات میں ، صرف چند مٹھی بھر ایسے ناگوار IPs ہیں جن کی آپ کو منفرد شناخت اور بلیک لسٹ کرنے کی ضرورت ہے۔

#کیٹ /کہاں/لاگ/auth.log| گرفت 'ناکام' | یونیک

یونیک کمانڈ کو صرف منفرد لائنیں چھاپنی ہیں۔ uniq -f 3 پہلے تین فیلڈز کو چھوڑ دیتا ہے (ٹائم اسٹیمپ کو نظر انداز کرنے کے لیے جو کبھی نہیں دہرائے جاتے) اور پھر منفرد لائنوں کی تلاش شروع کر دیتے ہیں۔

5. خرابی کے پیغامات کے لیے گرفت۔

رسائی اور غلطی کے نوشتہ جات کے لیے گریپ کا استعمال صرف SSH تک محدود نہیں ہے۔ ویب سرورز (جیسے Nginx) لاگ کی خرابی اور لاگ تک رسائی بہت احتیاط سے کرتے ہیں۔ اگر آپ مانیٹرنگ اسکرپٹس ترتیب دیتے ہیں جو آپ کو الرٹ بھیجتے ہیں جب گریپ 404 ایک نئی قیمت لوٹاتا ہے۔ یہ کافی مفید ہو سکتا ہے۔

# grep -w '404' /var/www/nginx/access.log

192.168.0.100 -[06۔/دسمبر/2018۔: 02:بیس:29۔+0530۔] 'GET /favicon.ico HTTP /1.1' 404۔ 200۔
'http://192.168.0.102/' موزیلا/5.0 (ونڈوز NT 10.0 Win Win64 x x64)
AppleWebKit/537.36 (KHTML ، جیسے Gecko) Chrome/70.0.3538.110 Safari/537.36 '


192.168.0.101 - -[06۔/دسمبر/2018۔: 02:چار پانچ:16۔+0530۔] 'GET /favicon.ico HTTP /1.1' 404۔ 143۔
'http://192.168.0.102/' موزیلا/5.0 (آئی پیڈ CP سی پی یو او ایس 12_1 جیسے میک او ایس ایکس)
ایپل ویب کٹ/605.1.15 (کے ایچ ٹی ایم ایل ، جیسے جیکو) ورژن/12.0 موبائل/15 ای 148 سفاری/604.1 '

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

6. پیکیج لسٹنگ۔

ڈیبین پر مبنی نظاموں کے لیے ، dpkg -l آپ کے سسٹم پر نصب تمام پیکجوں کی فہرست دیتا ہے۔ آپ کسی مخصوص ایپلی کیشن سے متعلق پیکجوں کی تلاش کے لیے اسے گریپ کمانڈ میں پائپ کر سکتے ہیں۔ مثال کے طور پر:

#dpkg - | گرفت 'میں آیا'

7. grep -v fileNames۔

تمام لائنوں کی فہرست بنانے کے لیے۔ نہیں دیئے گئے پیٹرن پر مشتمل ، پرچم -v استعمال کریں۔ یہ بنیادی طور پر ایک باقاعدہ گریپ کمانڈ کے برعکس ہے۔

8. grep -l

یہ ان تمام فائلوں کی فہرست دیتا ہے جن میں فراہم کردہ پیٹرن کا کم از کم ایک واقعہ ہوتا ہے۔ یہ مفید ہے جب آپ متعدد فائلوں والی ڈائریکٹری کے اندر ایک نمونہ تلاش کر رہے ہوں۔ یہ صرف فائل کا نام پرنٹ کرتا ہے ، نہ کہ پیٹرن کے ساتھ مخصوص لائن۔

9. ایک لفظ کا آپشن -ڈبلیو۔

$گرفت -میں <پیٹرن>فائل نام

-w پرچم گریپ کو بتاتا ہے کہ دیئے گئے پیٹرن کو پورے لفظ کے طور پر تلاش کریں نہ کہ صرف ایک لکیر کا سبٹرنگ۔ مثال کے طور پر ، اس سے پہلے ہم نے آئی پی ایڈریس اور پیٹرن کی گرفت کی۔ inet دونوں کے ساتھ لائنوں کو پرنٹ کیا inet اور inet6 IPv4 اور IPv6 دونوں پتوں کی فہرست۔ لیکن اگر ہم نے استعمال کیا -w پرچم صرف لائنوں کے ساتھ۔ inet جیسا کہ ایک لفظ پہلے اور اس کے بعد سفید جگہیں ایک درست میچ ہے۔

10. توسیعی باقاعدہ اظہار۔

آپ اکثر دیکھیں گے کہ گریپ سے تعلق رکھنے والے باقاعدہ تاثرات قدرے محدود ہیں۔ زیادہ تر سکرپٹ اور ہدایات میں آپ کو -E پرچم کا استعمال مل جائے گا اور یہ آپ کو پیٹرن داخل کرنے کی اجازت دے گا جسے توسیعی موڈ کہا جاتا ہے۔

سپرمین اور اسپائیڈر مین کے الفاظ تلاش کرنے کے لیے یہاں گریپ اور گریپ ای کمانڈز ہیں۔

$گرفت ' (سپر | مکڑی ) آدمی'متن
$گرفت -اور '(سپر | مکڑی) آدمی'متن

جیسا کہ آپ دیکھ سکتے ہیں توسیعی ورژن پڑھنا بہت آسان ہے۔

11. اپنے کنٹینرز کے لیے گریپ۔

اگر آپ کے میزبان پر کنٹینرز کا ایک بڑا کلسٹر چل رہا ہے تو ، آپ ان کو تصویر کے نام ، حیثیت ، بندرگاہوں کے ذریعے جو کہ وہ ظاہر کر رہے ہیں اور بہت سی دوسری خصوصیات سے پکڑ سکتے ہیں۔ مثال کے طور پر،

$ڈاکرپی ایس | گرفت [تصویری نام]

12. اپنی پھلیوں کے لیے گریپ۔

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

$kubectl پھلیاں حاصل کریں۔| گرفت <تعیناتی نام>

13. بگ ڈیٹا کے لیے گرفت۔

اکثر اوقات نام نہاد بگ ڈیٹا تجزیہ میں دی گئی ڈیٹاسیٹ میں سادہ تلاش ، چھانٹ اور پیٹرن کی گنتی شامل ہوتی ہے۔ نچلی سطح کی UNIX افادیت جیسے grep ، uniq ، wc خاص طور پر اس میں اچھی ہیں۔ یہ بلاگ پوسٹ گریپ اور دیگر یونکس افادیتوں کا استعمال کرتے ہوئے محض سیکنڈ میں مکمل ہونے والے کام کی ایک عمدہ مثال دکھاتی ہے جبکہ ہڈوپ کو تقریبا half آدھا گھنٹہ لگا۔

مثال کے طور پر ، اس ڈیٹا سیٹ کا سائز 1.7GB سے زیادہ ہے۔ اس میں شطرنج میچوں کی ایک بھیڑ کے بارے میں معلومات موجود ہیں ، بشمول چالیں ، کون جیتا ، وغیرہ ہم صرف نتائج میں دلچسپی رکھتے ہیں لہذا ہم مندرجہ ذیل کمانڈ کو چلاتے ہیں:

$گرفت 'نتیجہ'ملین بیس-2.22۔.pgn| ترتیب دیں | یونیک -سی
221۔ [نتیجہ'*']
653728۔ [نتیجہ'0-1']
852305۔ [نتیجہ'1-0']
690934۔ [نتیجہ'1 / 2-1 / 2']

اس میں 4 سال پرانے 2 کور/4 تھریڈ پروسیسر پر تقریبا seconds 15 سیکنڈ لگے۔ تو اگلی بار جب آپ ڈیٹا کا بڑا مسئلہ حل کر رہے ہیں۔ سوچئے کہ کیا آپ اس کے بجائے گریپ استعمال کرسکتے ہیں۔

14. grep –color = auto

یہ آپشن گریپ کو اس لائن کے اندر پیٹرن کو نمایاں کرنے دیتا ہے جہاں یہ پایا گیا تھا۔

15. grep -i

گریپ پیٹرن مماثلت فطری طور پر کیس حساس ہے۔ لیکن اگر آپ کو اس کی پرواہ نہیں ہے تو -i پرچم کا استعمال گریپ کیس کو غیر حساس بنا دے گا۔

16. grep -n

-n پرچم لائن نمبر دکھائے گا تاکہ آپ کو بعد میں وہی لائن ڈھونڈنے کی فکر نہ کریں۔

17. گٹ گریپ۔

گٹ ، ورژن کنٹرول سسٹم ، خود ہی ایک بلٹ ان گریپ کمانڈ رکھتا ہے جو آپ کے باقاعدہ گریپ کی طرح کام کرتا ہے۔ لیکن اس کا استعمال کسی بھی پرعزم درخت پر پیٹرنز کو تلاش کرنے کے لیے استعمال کیا جا سکتا ہے جس میں مقامی گٹ CLI استعمال کیا جاتا ہے ، بجائے تھکاوٹ پائپوں کے۔ مثال کے طور پر ، اگر آپ اپنے ریپو کی ماسٹر برانچ میں ہیں تو آپ ریپو کو استعمال کرتے ہوئے گریپ کرسکتے ہیں:

(ماسٹر)$git grep <پیٹرن>

18. grep -o

جب آپ ریجیکس کو ڈیبگ کرنے کی کوشش کر رہے ہیں تو -o پرچم واقعی مددگار ہے۔ یہ پوری لائن کے بجائے صرف لائن کا مماثل حصہ پرنٹ کرے گا۔ لہذا ، اگر ، آپ کو فراہم کردہ پیٹرن کے لیے بہت زیادہ ناپسندیدہ لائن مل رہی ہے ، اور آپ نہیں سمجھ سکتے کہ ایسا کیوں ہو رہا ہے۔ آپ -o پرچم کو ناگوار سبٹرنگ پرنٹ کرنے کے لیے استعمال کر سکتے ہیں اور وہاں سے اپنے ریجیکس کے بارے میں وجہ بتا سکتے ہیں۔

19. grep -x

-x پرچم ایک لائن پرنٹ کرے گا ، اگر اور صرف اگر ، پوری لائن آپ کے فراہم کردہ ریجیکس سے ملتی ہے۔ یہ کسی حد تک -w پرچم سے ملتا جلتا ہے جس نے ایک لائن پرنٹ کی اور اگر صرف ایک مکمل لفظ فراہم کردہ ریجیکس سے مماثل ہو۔

20. grep -T

جب شیل اسکرپٹس سے لاگز اور آؤٹ پٹ سے نمٹتے ہیں تو ، آپ کو آؤٹ پٹ کے مختلف کالموں میں فرق کرنے کے لیے سخت ٹیبز کا سامنا کرنا پڑتا ہے۔ -T پرچم صاف طور پر ان ٹیبز کو سیدھا کرے گا تاکہ کالموں کو صفائی سے ترتیب دیا جائے ، جس سے آؤٹ پٹ انسانی پڑھنے کے قابل ہوجائے۔

21. grep -q

یہ آؤٹ پٹ کو دبا دیتا ہے اور خاموشی سے گریپ کمانڈ چلاتا ہے۔ متن کو تبدیل کرتے وقت ، یا ڈیمون اسکرپٹ میں گریپ چلاتے وقت بہت مفید ہے۔

22. grep -P

جو لوگ ریگولر ایکسپریشن نحو کو پرل کرنے کے عادی ہوتے ہیں وہ -P پرچم کو بالکل اسی طرح استعمال کرنے کے لیے استعمال کر سکتے ہیں۔ آپ کو بنیادی باقاعدہ اظہار سیکھنے کی ضرورت نہیں ہے ، جو گریپ بطور ڈیفالٹ استعمال کرتا ہے۔

23. grep -D [ACTION]

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

24۔ تکرار۔

اگر دیئے گئے پیٹرن کی تلاش کر رہے ہیں جو ایک معروف سادہ پیٹرن کی تکرار ہے تو پھر تکرار کی تعداد کو ظاہر کرنے کے لیے گھوبگھرالی منحنی خطوط وحدانی کا استعمال کریں

$گرفت -اور [-]{10۔}

یہ 10 یا اس سے زیادہ ہندسوں پر مشتمل لائنوں کو پرنٹ کرتا ہے۔

25۔ تکرار شارٹ ہینڈز۔

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

؟ : سوالیہ نشان سے پہلے کا نمونہ صفر یا ایک وقت سے ملنا چاہیے۔

*: ستارے سے پہلے کا پیٹرن صفر یا اس سے زیادہ بار مماثل ہونا چاہیے۔

+: پلس سے پہلے کا پیٹرن ایک یا زیادہ مرتبہ مماثل ہونا چاہیے۔

25. بائٹ آفسیٹس۔

اگر آپ جاننا چاہتے ہیں کہ لائنوں کا بائٹ آفسیٹ دیکھنا ہے جہاں مماثل اظہار پایا جاتا ہے تو ، آپ آف سیٹ کو پرنٹ کرنے کے لیے -b پرچم استعمال کرسکتے ہیں۔ کسی لائن کے صرف مماثل حصے کے آفسیٹ کو پرنٹ کرنے کے لیے ، آپ -o پرچم کے ساتھ -b پرچم استعمال کرسکتے ہیں۔

$گرفت یا <پیٹرن> [فائل کا نام]

آفسیٹ کا سیدھا مطلب ہے ، فائل کے آغاز سے کتنے بائٹ کے بعد مماثل تار شروع ہوتا ہے۔

26. egrep ، fgrep اور rgerp

آپ اکثر egrep کی دعوت کو دیکھیں گے ، توسیع شدہ باقاعدہ اظہار کے نحو کو استعمال کرنے کے لیے جس پر ہم نے پہلے بحث کی تھی۔ تاہم ، یہ ایک فرسودہ ترکیب ہے اور یہ تجویز کی جاتی ہے کہ آپ اسے استعمال کرنے سے گریز کریں۔ اس کے بجائے grep -E استعمال کریں۔ اسی طرح ، fgrep کے بجائے grep -F اور rgrep کے بجائے grep -r استعمال کریں۔

27. grep -z

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

28. grep -a [fileName]

-a پرچم گریپ کو بتاتا ہے کہ فراہم کردہ فائل کے ساتھ ایسا سلوک کریں جیسے یہ باقاعدہ متن ہو۔ فائل بائنری ہوسکتی ہے ، لیکن گریپ اندر موجود مواد کا علاج کرے گا ، گویا وہ متن ہیں۔

29. grep -U [fileName]

-U پرچم grep کو فراہم کردہ فائلوں کے ساتھ ایسا سلوک کرنے کو کہتا ہے جیسے وہ بائنری فائلیں ہوں نہ کہ متن۔ بطور ڈیفالٹ گریپ پہلے چند بائٹس کو دیکھ کر فائل کی قسم کا اندازہ لگاتا ہے۔ اس جھنڈے کے استعمال سے اندازہ ہوتا ہے کہ کام کا اندازہ ہے۔

Grep -m NUM

بڑی فائلوں کے ساتھ ، ایکسپریشن کے لیے گرفت کرنا ہمیشہ کے لیے لے سکتا ہے۔ تاہم ، اگر آپ میچوں کی صرف پہلی NUM نمبروں کی جانچ کرنا چاہتے ہیں تو آپ اسے پورا کرنے کے لیے -m پرچم استعمال کرسکتے ہیں۔ یہ تیز ہے اور آؤٹ پٹ بھی اکثر قابل انتظام ہوتا ہے۔

نتیجہ

سیسڈمین کے روز مرہ کے بہت سے کام میں متن کے بڑے حصوں کو چھاننا شامل ہے۔ یہ سیکیورٹی لاگز ، آپ کے ویب یا میل سرور سے لاگ ، صارف کی سرگرمی یا یہاں تک کہ مین پیجز کا بڑا متن بھی ہوسکتا ہے۔ استعمال کے ان معاملات سے نمٹنے کے دوران گریپ آپ کو اضافی لچک فراہم کرتا ہے۔

امید ہے کہ مذکورہ بالا چند مثالوں اور استعمال کے معاملات نے سافٹ ویئر کے اس زندہ جیواشم کو بہتر طور پر سمجھنے میں آپ کی مدد کی ہے۔