Ack grep سے بہتر ہے۔

میں آپ کو ایک تلاش کی افادیت کے بارے میں بتانا چاہتا ہوں جو زندگی کو بہت آسان بناتی ہے۔ جب میں سرور پر پہنچتا ہوں اور مجھے کچھ تلاش کرنے کی ضرورت ہوتی ہے، تو میں سب سے پہلے یہ چیک کرتا ہوں کہ آیا ack انسٹال ہے۔ یہ افادیت گریپ کے ساتھ ساتھ کسی حد تک فائنڈ اور ڈبلیو سی کا بہترین متبادل ہے۔ grep کیوں نہیں؟ Ack میں باکس سے باہر اچھی ترتیبات، زیادہ انسانی پڑھنے کے قابل اختیارات، پرل ریجیکس اور ایک کنفگ سسٹم ہے۔ اگر آپ ٹرمینل کے ذریعے تلاش کرنا چاہتے ہیں، تو آپ کو اسے ضرور آزمانا چاہیے۔

بنیادی خصوصیات

Ack بذریعہ ڈیفالٹ تکرار ہوتا ہے، اور کم اختیارات لکھنا ہمیشہ اچھا خیال ہوتا ہے۔

ہم ایک جھنڈا استعمال کر سکتے ہیں۔ -wیوٹیلیٹی کو الفاظ کی حدود (وائٹ اسپیس، سلیشز وغیرہ) سے گھرا ہوا ہمارے پیٹرن کی مثال تلاش کرنے کے لیے بتانا۔

ack -w mysql

Ack grep سے بہتر ہے۔

Ack فائل کی قسم کے ذریعہ تلاش کی حمایت کرتا ہے۔ مثال کے طور پر، آئیے json فائلوں میں ماڈیول ورژن تلاش کرتے ہیں۔

ack --json '"version":s+"d+.d+.d+"'

Ack grep سے بہتر ہے۔

معاون فائل کی اقسام کی مکمل فہرست اس کا استعمال کرتے ہوئے دیکھی جا سکتی ہے:

ack --help-types

اکثر آپ کو یہ گننا پڑتا ہے کہ لاگ فائل میں کوئی جملہ کتنی بار ظاہر ہوتا ہے، مثال کے طور پر، یہ سمجھنے کے لیے کہ اسکرپٹ نے کتنے ڈیٹا پر کارروائی کی۔

Ack grep سے بہتر ہے۔
ہم شمار کرتے ہیں کہ test.log فائل میں کتنی بار عمل ہوتا ہے، کیس کو مدنظر نہیں رکھتے ہوئے (-i).

ہم واقعات کو صرف ایک مخصوص فائل میں نہیں بلکہ ایک گروپ میں گن سکتے ہیں۔ آئیے لفظ mysql کے لیے پچھلی تلاش کو حتمی شکل دیں: الفاظ کے واقعات کی تعداد گنیں (-ایس) *.js فائلوں میں(--js)، ان فائلوں کو چھوڑ کر جن میں کچھ نہیں ملا (-h) اور نتیجہ کا خلاصہ۔

# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql

Ack grep سے بہتر ہے۔

اس کے علاوہ، ہم (-l)

ack --js -w -cl mysql

Ack grep سے بہتر ہے۔

اگر آپ کو اپنی تلاش کے لیے اضافی سیاق و سباق کی ضرورت ہے، تو آپ ack سے پوچھ سکتے ہیں۔
تک لائنیں دکھائیں (-B) اور اس کے بعد (-A) پائے گئے اظہار کا۔ ایسا کرنے کے لیے، آپ کو آپشن کے بعد ان لائنوں کی تعداد بتانے کی ضرورت ہے جنہیں دکھانے کی ضرورت ہے۔

# 2 строки до 
ack --js --column -B 2 "query.once('" ./lib/

Ack grep سے بہتر ہے۔

# 2 строки после 
ack --js --column -A 2 "query.once('" . /lib/

Ack grep سے بہتر ہے۔

اور اگر آپ کو دونوں کی ضرورت ہو تو استعمال کریں (-کے ساتھ)

ack --js --column -C 2 "query.once('" ./lib/

ایک آپشن بھی ہے(-v) تلاش کو الٹنے کے لیے، یعنی ایسی لائنیں دکھائیں جن میں دیا ہوا پیٹرن نہ ہو۔

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

Ack، grep کے برعکس، پرل کے موافق اظہار کا استعمال کرتا ہے۔
میرے لیے یہ ایک بڑا پلس ہے؛ مجھے ریگولر ایکسپریشنز کے لیے الگ نحو یاد رکھنے کی ضرورت نہیں ہے۔

ack 'vars+adds+'

Ack grep سے بہتر ہے۔

زیادہ پیچیدہ مثال

ack '*s+[vd+.d+.d+]'

Ack grep سے بہتر ہے۔

اکثر آپ نتائج میں صرف وہی چھوڑنا چاہتے ہیں جو ٹیمپلیٹ سے میل کھاتا ہے۔ --output آپشن یہاں مدد کرے گا (-o)

ack -o '*s+[vd+.d+.d+]'

Ack grep سے بہتر ہے۔

اس کے علاوہ، قوسین کا استعمال کرتے ہوئے ہم پائے گئے حصے کو منتخب کر سکتے ہیں اور $[گروپ نمبر] متغیر کے ذریعے آؤٹ پٹ میں اس تک رسائی حاصل کر سکتے ہیں۔ مثال کے طور پر،

ack --output='version is $1' '*s+[v(d+.d+.d+)]'

Ack grep سے بہتر ہے۔

Ack کے پاس مفید اختیارات ہیں۔ -- رینج شروع и -- رینج کا اختتام. وہ جب مدد کرتے ہیں۔
ڈیٹا ایک لائن میں نہیں بلکہ ملٹی لائن فارم میں محفوظ کیا جاتا ہے۔

مثال کے طور پر، sql کوڈ والی ایک فائل ہے۔

Ack grep سے بہتر ہے۔

آئیے کالم کے نام نکالتے ہیں۔ بلاک کا آغاز SELECT سے شروع ہونے والی ایک لائن ہوگی، اور اختتام FROM سے شروع ہونے والی لائن ہوگی۔

ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql

Ack grep سے بہتر ہے۔

اگر تلاش کے اظہار میں خاص حروف جیسے پیریڈ، ایک قوسین اور دیگر شامل ہیں، تو ان کو استعمال کرنے سے بچنے کے لیے، آپ اختیار استعمال کر سکتے ہیں۔ -Q.

# Поиск с экранированием 
ack --json 'mysql.'    
# Поиск без экранирования
ack --json -Q mysql.

Ack grep سے بہتر ہے۔

فائلوں کے ساتھ کام کرنا

ایک مخصوص توسیع کے ساتھ فائلوں کی فہرست حاصل کریں۔

ack -f --js

Ack grep سے بہتر ہے۔

آپشن کا استعمال کرتے ہوئے تمام js فائلوں کو تلاش کریں جن کا نام P* سے شروع ہوتا ہے۔-g).

ack -g --js '/Pa.+.js$'

Ack grep سے بہتر ہے۔

تشکیل

یوٹیلیٹی کی اپنی تشکیل فائل ہے۔ آپ صارف کے لیے ایک عالمی کنفیگریشن (~/.ackrc) اور ایک مخصوص فولڈر کے لیے ایک مقامی دونوں رکھ سکتے ہیں (آپ کو فولڈر میں .ackrc فائل بنانے کی ضرورت ہے)۔

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

تلاش کرتے وقت فولڈر کو نظر انداز کریں۔

--ignore-dir=dist

آئیے اپنی مرضی کے مطابق فائل کی قسم -vue شامل کریں۔

--type-add=vue:ext:js,vue

اب آپ فائلوں کو تلاش کرنے کے لیے --vue آپشن استعمال کر سکتے ہیں۔ .vue مثال کے طور پر: ack --vue ایپ.
آپ اس اختیار کے لیے ایکسٹینشنز کی فہرست بتا سکتے ہیں۔ مثال کے طور پر، یہاں، -vue استعمال کرتے وقت، درج ذیل پر کارروائی کی جائے گی۔
.js فائلیں

فائلوں کو نظر انداز کریں، مثال کے طور پر minified *.min.js

--ignore-file=match:/.min.js$/

تنصیب

CentOS

yum update -y && yum install ack -y

اوبنٹو

apt-get update -y && apt-get install ack-grep -y

میک OS

brew update && brew install  ack

سائٹ سے انسٹالیشن

curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack

ایڈیٹرز کے لیے پلگ ان:

حاصل يہ ہوا

یہ تمام امکانات نہیں ہیں۔ افعال کی مکمل فہرست کو چلا کر دیکھا جا سکتا ہے:

ack –-help
# или
ack --man

ack یوٹیلیٹی آپ کو ٹرمینل میں تلاش کو زیادہ آسان اور لچکدار بنانے کی اجازت دیتی ہے۔ اور پائپ لائن کا استعمال کرتے ہوئے (ack -C 10 ہیلو | ایک دنیا) آپ فائل سسٹم میں اور خود فائلوں میں ڈیٹا کو تلاش کرنے اور فلٹر کرنے کے لیے ایک طاقتور کمبائن بنا سکتے ہیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں