لینکس پر گریپ کمانڈ کا استعمال کیسے کریں

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

کہانی کے پیچھے پیچھے

گریپ کمانڈ تین وجوہات کی بناء پر لینکس اور یونکس حلقوں میں مشہور ہے۔ او .ل ، یہ بے حد مفید ہے۔ دوم ، اختیارات کی دولت بھاری پڑسکتی ہے۔ تیسرا ، یہ کسی خاص ضرورت کو پورا کرنے کے لئے راتوں رات لکھا جاتا تھا۔ پہلے دو پر دھماکے ہو رہے ہیں۔ تیسرا قدرے دور ہے۔

کین تھامسن نے باقاعدہ اظہار کی تلاش کی قابلیت کو اس سے حاصل کیا تھا ایڈ ایڈیٹر (واضح طور پر ee-Dee) اور ٹیکسٹ فائلوں کو تلاش کرنے کے ل a ایک چھوٹا سا پروگرام — اپنے استعمال کے ل— تیار کیا۔ بیل لیبس میں ان کے محکمہ کے سربراہ ، ڈگ میکلروئے ، تھامسن کے پاس گئے اور انہوں نے اس مسئلے کو بیان کیا جس میں ان کے ایک ساتھی ، لی میکہمون کا سامنا تھا۔

میک میہن ٹیکسٹیکل تجزیے کے ذریعے فیڈرلسٹ پیپرز کے مصنفین کی شناخت کرنے کی کوشش کر رہے تھے۔ اسے ایک ایسے ٹول کی ضرورت تھی جو ٹیکسٹ فائلوں میں جملے اور ڈور ڈھونڈ سکے۔ تھامسن نے اس شام تقریبا an ایک گھنٹہ اپنے آلے کو عام افادیت بنانے میں گزارا جسے دوسروں کے ذریعہ استعمال کیا جاسکتا ہے اور اس کا نام تبدیل کردیا گیا گریپ. اس نے یہ نام خدا سے لیا ایڈ کمانڈ سٹرنگ جی / ری / پی ، جو "عالمی باقاعدگی سے اظہار کی تلاش" کا ترجمہ کرتا ہے۔

آپ تھامسن کو برائن کارنیگن سے پیدائش کے بارے میں گفتگو کرتے ہوئے دیکھ سکتے ہیں گریپ.

گریپ کے ساتھ سادہ تلاش

کسی فائل میں ڈور ڈھونڈنے کے لئے ، کمانڈ لائن پر سرچ ٹرم اور فائل کا نام پاس کریں:

ملاپ کی لکیریں آویزاں ہیں۔ اس معاملے میں ، یہ ایک ہی لائن ہے۔ ملاپ کے متن کو اجاگر کیا جاتا ہے۔ اس کی وجہ یہ ہے کہ زیادہ تر تقسیم پر گریپ اس سے علیحدہ ہے:

عرف گریپ = "گریپ - کلور = آٹو"

آئیے ان نتائج پر نگاہ ڈالیں جہاں متعدد لکیریں ملتی ہیں۔ ہم اطلاق لاگ فائل میں "اوسط" کے لفظ تلاش کریں گے۔ کیونکہ ہم یہ یاد نہیں کر سکتے ہیں کہ اگر یہ لاگ ان فائل میں چھوٹے لفظوں میں ہے تو ہم اسے استعمال کریں گے -میں (کیس کو نظر انداز کریں) اختیار:

گریپ -i اوسط geek-1.log

ہر ایک میں ملاپ کی لکیر دکھائی دیتی ہے ، ہر ایک میں ملاپ کے متن کو نمایاں کیا جاتا ہے۔

ہم -v (الٹا میچ) آپشن کا استعمال کرکے غیر مماثل لائنوں کو ظاہر کرسکتے ہیں۔

grep -v میم geek-1.log

کوئی اجاگر نہیں ہے کیونکہ یہ غیر مماثل لائنیں ہیں۔

ہم سبب بن سکتے ہیں گریپ مکمل طور پر خاموش رہنا۔ نتیجہ واپسی کی قیمت کے طور پر خول پر منتقل کیا جاتا ہے گریپ. صفر کا نتیجہ تار کا مطلب ہے تھا ملا ، اور کسی ایک کے نتیجے میں اس کا مطلب ہے نہیں تھا ملا ہم استعمال کرتے ہوئے ریٹرن کوڈ کو چیک کرسکتے ہیں $? خصوصی پیرامیٹرز:

گریپ -ق اوسط geek-1.log
گونج $؟
grep -q howtogeek geek-1.log
گونج $؟

گریپ کے ساتھ بار بار چلنے والی تلاشیں

گھریلو ڈائریکٹریوں اور ذیلی ڈائریکٹریوں کو تلاش کرنے کے ل the ، -r (recursive) آپشن کا استعمال کریں۔ نوٹ کریں کہ آپ کمانڈ لائن پر فائل کا نام فراہم نہیں کرتے ہیں ، آپ کو ایک راستہ فراہم کرنا ہوگا۔ یہاں ہم موجودہ ڈائریکٹری میں تلاش کررہے ہیں۔ اور کوئی سب ڈائرکٹریاں:

grep -r -i میمفری۔

آؤٹ پٹ میں ہر مماثل لائن کی ڈائریکٹری اور فائل نام شامل ہیں۔

ہم بنا سکتے ہیںگریپ استعمال کرکے علامتی روابط کی پیروی کریں -R (پنراورتی تعل .ق) اختیار۔ ہمیں اس ڈائریکٹری میں ایک علامتی لنک ملا ہے ، جس کا نام ہے نوشتہ فولڈر. اس کی طرف اشارہ کرتا ہے / گھر / ڈیو / نوشتہ جات.

LS -l لاگز - فولڈر

آئیے اس کے ساتھ اپنی آخری تلاش دہرائیں-R (پنراورتی تعل )ق) اختیار:

grep -R -i میمفری۔

علامتی لنک کی پیروی کی گئی ہے اور جس ڈائریکٹری کی طرف اس کی طرف اشارہ کیا گیا ہے اس کے ذریعے تلاش کی جائے گی گریپ بھی.

پورے الفاظ کی تلاش

پہلے سے طے شدہ ، گریپ اگر اس لائن میں کہیں بھی تلاش کا ہدف ظاہر ہوتا ہے ، تو اس میں کسی اور تار کے اندر بھی تلاش ہوجاتا ہے۔ اس مثال کو دیکھیں۔ ہم "مفت" کے لفظ کو تلاش کرنے جارہے ہیں۔

grep -i مفت geek-1.log

نتائج وہ سطریں ہیں جن میں تار "آزاد" ہے ، لیکن وہ الگ الگ الفاظ نہیں ہیں۔ وہ "میمفری" کے تار کا حصہ ہیں۔

زور دینا گریپ صرف "الگ الگ الفاظ" سے ملنے کے لئے ، استعمال کریں -W (word regexp) آپشن۔

grep -w -i مفت geek-1.log
گونج $؟

اس بار کوئی نتائج نہیں ہیں کیونکہ تلاش میں اصطلاح "مفت" فائل میں الگ لفظ کے طور پر ظاہر نہیں ہوتا ہے۔

متعدد تلاش کی شرائط کا استعمال

-E (توسیعی regexp) آپشن آپ کو متعدد الفاظ تلاش کرنے کی اجازت دیتا ہے۔ ( -E اختیار فرسودہ کی جگہ لے لیتا ہے مثال کے طور پر کا ورژن گریپ.)

یہ کمانڈ دو سرچ اصطلاحات ، "اوسط" اور "یادگاری" کی تلاش کرتی ہے۔

grep -E -w -i "اوسط | یادگاری" geek-1.log

مماثل لائنوں میں سے ہر ایک سرچ کی اصطلاحات کے لئے ظاہر ہوتا ہے۔

آپ متعدد اصطلاحات کو بھی تلاش کرسکتے ہیں جو ضروری نہیں کہ پورے الفاظ ہوں ، بلکہ وہ پورے الفاظ بھی ہوسکتے ہیں۔

-e (پیٹرن) آپشن آپ کو کمانڈ لائن پر متعدد سرچ اصطلاحات استعمال کرنے کی سہولت دیتا ہے۔ ہم تلاش کا نمونہ بنانے کے لئے باقاعدہ اظہار بریکٹ خصوصیت کا استعمال کر رہے ہیں۔ یہ بتاتا ہے گریپ بریکٹ میں موجود کسی بھی ایک حرف سے ملنے کے لئے "[]"۔ اسکا مطلب گریپ جیسا کہ تلاش کرتا ہے "KB" یا "KB" سے مماثل ہوجاتا ہے۔

دونوں تاروں کا ملاپ ہوتا ہے ، اور در حقیقت ، کچھ لکیریں دونوں تاروں پر مشتمل ہوتی ہیں۔

قطعات کا قطعی مقابلہ

-ایکس (لائن regexp) صرف ان لائنوں سے میل کھاتا ہے جہاں پوری لائن تلاش کی اصطلاح سے میل کھاتا ہے۔ آئیے اس تاریخ اور وقت کے ڈاک ٹکٹ کے لئے تلاش کریں جس کے بارے میں ہمیں معلوم ہو کہ لاگ فائل میں صرف ایک بار ظاہر ہوتا ہے۔

grep -x "20-جنوری - 06 15:24:35" geek-1.log

ملنے والی ایک لائن مل گئی ہے اور دکھائی دیتی ہے۔

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

ہم اس طرح کے تبصرے کی لائنوں کو مؤثر طریقے سے فلٹر کرسکتے ہیں۔

sudo grep -v "#" / وغیرہ / sudoers

تجزیہ کرنا بہت آسان ہے۔

صرف ملاپ کے متن کو ظاہر کرنا

ایک ایسا موقع ہوسکتا ہے جب آپ پوری ملاپ کی لکیر کو نہیں دیکھنا چاہتے ہیں ، صرف ملاوٹ والا متن۔ -o (صرف ملاپ) آپشن بس اتنا ہی کرتا ہے۔

grep -o میمفری geek-1.log

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

گریپ کے ساتھ گنتی

گریپ یہ صرف متن کے بارے میں نہیں ہے ، یہ عددی معلومات بھی فراہم کرسکتا ہے۔ ہم بنا سکتے ہیں گریپ ہمارے لئے مختلف طریقوں سے شمار کریں۔ اگر ہم جاننا چاہتے ہیں کہ فائل میں کتنی بار سرچ ٹرم ظاہر ہوتا ہے ، تو ہم اسے استعمال کرسکتے ہیں -c (گنتی) کا اختیار۔

گریپ -c اوسط geek-1.log

گریپ اطلاع دیتا ہے کہ سرچ فائل اس فائل میں 240 بار ظاہر ہوتی ہے۔

تم بنا سکتے ہو گریپ ہر ایک سے ملنے والی لائن کے ل number لائن نمبر کو ظاہر کرکے دکھائیں -n (لائن نمبر) آپشن۔

grep -n جان geek-1.log

ہر مماثل لائن کے لئے لائن نمبر لائن کے آغاز میں ظاہر ہوتا ہے۔

ظاہر ہونے والے نتائج کی تعداد کو کم کرنے کے ل the ، استعمال کریں (زیادہ سے زیادہ گنتی) کا اختیار۔ ہم آؤٹ پٹ کو پانچ مماثل لائنوں تک محدود کرنے جارہے ہیں:

grep -m5 -n جن geek-1.log

سیاق و سباق کو شامل کرنا

ہر ایک ملاپ کی لائن کے ل some کچھ اضافی لائنیں — ممکنہ طور پر غیر مماثل لائنیں to دیکھنے کے قابل ہونے کی وجہ سے اکثر کارآمد ہوتا ہے۔ اس سے یہ فرق کرنے میں مدد مل سکتی ہے کہ کن لائنوں میں آپ کی دلچسپی ہے۔

مماثلت والی لائن کے بعد کچھ لائنیں ظاہر کرنے کے لئے ، -A (سیاق و سباق کے بعد) آپشن کا استعمال کریں۔ ہم اس مثال میں تین لائنوں کے لئے پوچھ رہے ہیں:

grep -A 3 -x "20-Jan-06 15:24:35" geek-1.log

مماثل لائن سے پہلے سے کچھ لائنیں دیکھنے کے ل the ، استعمال کریں -بی (پہلے سیاق و سباق) آپشن۔

grep -B 3 -x "20-Jan-06 15:24:35" geek-1.log

اور میچ لائن سے پہلے اور بعد کی لائنوں کو شامل کرنے کے لئے -سی (سیاق و سباق) آپشن۔

grep -C 3 -x "20-Jan-06 15:24:35" geek-1.log

ملاپ والی فائلیں دکھا رہا ہے

فائلوں کے نام دیکھنے کے ل that جو تلاش کی اصطلاح پر مشتمل ہے ، استعمال کریں -l (میچ والی فائلیں) آپشن۔ یہ جاننے کے لئے کہ کون سی سی کوڈ فائلوں میں حوالہ جات موجود ہیں sl.h ہیڈر فائل ، یہ کمانڈ استعمال کریں:

grep -l "sl.h" * .c

فائل کے نام درج ہیں ، مماثل لائنیں نہیں۔

اور یقینا. ، ہم ان فائلوں کو تلاش کرسکتے ہیں جن میں تلاش کی اصطلاح شامل نہیں ہے۔ -L (میچ کے بغیر فائلیں) آپشن بالکل ایسا ہی کرتا ہے۔

grep -L "sl.h" * .c

لائنز کا آغاز اور اختتام

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

grep "^" geek-1.log

لکیریں جن میں پہلے حرف کی حیثیت سے جگہ ہوتی ہے — لائن کے آغاز میں. ظاہر ہوتی ہیں۔

لائن کے اختتام سے ملنے کے لئے ، "$" باقاعدہ اظہار آپریٹر استعمال کریں۔ ہم ان لائنوں کو تلاش کرنے جارہے ہیں جو "00" کے ساتھ ختم ہوں گے۔

grep "00 $" geek-1.log

ڈسپلے میں ان لائنوں کو دکھایا گیا ہے جن میں حتمی حرف کی طرح "00" ہے۔

گریپ کے ساتھ پائپ کا استعمال کرنا

یقینا ، آپ ان پٹ کو پائپ کرسکتے ہیں گریپ ، سے پائپ آؤٹ کریں گریپ کسی اور پروگرام میں ، اور ہے گریپ پائپ چین کے وسط میں بسیرا۔

ہم کہتے ہیں کہ ہم اپنی C ماخذ کوڈ فائلوں میں "ایکسٹراٹ پارامیٹر" کے سارے واقعات دیکھنا چاہتے ہیں۔ ہم جانتے ہیں کہ وہاں بہت کچھ ہونے والا ہے ، لہذا ہم آؤٹ پٹ کو پائپ کرتے ہیں کم:

grep "ایکسٹریکٹ پیرامیٹرز" * .c | کم

پیداوار میں پیش کیا جاتا ہے کم.

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

اگر ہم پیداوار کو پائپ کرتے ہیں گریپ میں ڈبلیو سی اور استعمال کریں -l (لائنز) آپشن ، ہم سورس کوڈ فائلوں میں لائنوں کی تعداد گن سکتے ہیں جس میں "ایکسٹراٹ پارامیٹر" ہوتے ہیں۔ (ہم یہ استعمال کرکے حاصل کرسکتے ہیں گریپ-c (گنتی) کا اختیار ، لیکن پائپنگ کا مظاہرہ کرنے کا یہ صاف ستھرا طریقہ ہے گریپ.)

grep "ایکسٹریکٹ پیرامیٹرز" * .c | ڈبلیو سی ایل

اگلی کمانڈ کے ساتھ ، ہم پیداوار کو پائپ کر رہے ہیں ls میں گریپ اور پیداوار پائپنگ گریپ میں ترتیب دیں . ہم موجودہ ڈائرکٹری میں فائلوں کی فہرست درج کررہے ہیں ، ان میں "اگست" کے حجم رکھنے والے افراد کو منتخب کرکے اور فائل کے سائز کے مطابق ترتیب دیتے ہوئے:

ls -l | گریپ "اگست" | ترتیب دیں + 4 این

آئیے اس کو توڑ دیں:

  • ls -l: استعمال کرتے ہوئے فائلوں کی لمبی شکل کی لسٹنگ انجام دیں ls.
  • گریپ "اگست": سے لائنوں کو منتخب کریں ls ان میں "اگست" رکھنے والی فہرست۔ نوٹ کریں کہ اس سے وہ فائلیں بھی ملیں گی جن کے ناموں میں "اگست" ہے۔
  • ترتیب دیں + 4 این: چوتھے کالم (فائلائز) پر گریپ سے آؤٹ پٹ کو ترتیب دیں۔

ہمیں اگست میں ترمیم شدہ تمام فائلوں کی ایک فہرست کی فہرست مل جاتی ہے (سال کی پرواہ کیے بغیر) ، فائل کے سائز کے بڑھتے ہوئے ترتیب میں۔

متعلقہ:لینکس پر پائپ استعمال کرنے کا طریقہ

گریپ: کمانڈ کم ، اتحادی کی زیادہ

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

جوڑا گریپ کچھ باقاعدہ تاثرات کے ساتھ - فو واقعی اسے اگلی سطح پر لے جاتا ہے۔

متعلقہ:بہتر تلاش اور وقت کی بچت کے لئے بنیادی باقاعدہ اظہارات کا استعمال کیسے کریں


$config[zx-auto] not found$config[zx-overlay] not found