Миний амьдралыг хөнгөвчлөх хайлтын хэрэгслийн талаар би танд хэлэхийг хүсч байна. Би серверт нэвтрэн ямар нэг зүйл хайх шаардлагатай үед хамгийн түрүүнд хийх зүйл бол ack суулгасан эсэхийг шалгах явдал юм. Энэ хэрэгсэл нь grep-ийг маш сайн орлуулах бөгөөд тодорхой хэмжээгээр find and wc юм. Яагаад grep болохгүй гэж? Ack нь илүү сайн тохиргоотой, хүн унших боломжтой сонголтууд, Perl тогтмол илэрхийллүүд, тохиргооны системтэй. Хэрэв та терминалаар хайх дуртай (эсвэл хийх шаардлагатай) бол үүнийг туршиж үзэх хэрэгтэй.
Үндсэн шинж чанарууд
Ack нь анхдагчаар рекурсив бөгөөд цөөн сонголт бичих нь үргэлж сайн зүйл юм.
Бид тугийг ашиглаж болно -wүгийн зааг (зай, ташуу зураас гэх мэт) -ээр хүрээлэгдсэн бидний хэв маягийн жишээг хайхыг хэрэгсэлд хэлэх.
ack -w mysql
Ack нь файлын төрлөөр хайлт хийхийг дэмждэг. Жишээлбэл, JSON файлуудаас модулийн хувилбарыг олъё.
ack --json '"version":s+"d+.d+.d+"'
Дэмжигдсэн файлын төрлүүдийн бүрэн жагсаалтыг эндээс олж болно:
ack --help-typesСкрипт хэр их өгөгдөл боловсруулсныг ойлгохын тулд лог файлд хэллэг хэдэн удаа гарч байгааг тоолох шаардлагатай байдаг.
![]()
Бид тухайн тохиолдлыг үл тоомсорлон test.log файлд процесс хэдэн удаа гарч байгааг тоолдог (-i).
Бид зөвхөн нэг тодорхой файлд биш, харин бүлэгт тохиолдсон тохиолдлуудыг тоолж чадна. mysql гэсэн үгийн өмнөх хайлтыг боловсронгуй болгоцгооё: үгсийн тохиолдлын тоог тоолъё (-ээс) *.js файлд(-js), юу ч олдоогүй файлуудыг эс тооцвол (-h) болон үр дүнг нэгтгэн дүгнэх.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Нэмж дурдахад, бид файл тус бүрт тохиолдсон тохиолдлын тоог (-г ашиглан дэлгэрэнгүй тайланг авч болно.-l)
ack --js -w -cl mysql
Хэрэв танд хайлтанд нэмэлт контекст хэрэгтэй бол та зөвшөөрөл хүсч болно
өмнөх мөрүүдийг харуулах (-B) ба дараа (-A) олсон илэрхийлэл. Үүнийг хийхийн тулд сонголтын дараа харуулах мөрийн тоог зааж өгнө үү.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
Хэрэв танд хоёулаа хэрэгтэй бол (-FROM)
ack --js --column -C 2 "query.once('" ./lib/Бас сонголт бий(-v) хайлтыг эргүүлэх, өөрөөр хэлбэл өгөгдсөн загвар агуулаагүй мөрүүдийг харуулах.
Тогтмол илэрхийлэл
Ack нь grep-ээс ялгаатай нь Perl-тэй нийцтэй илэрхийлэлүүдийг ашигладаг.
Миний хувьд энэ бол том давуу тал; Би ердийн илэрхийллийн хувьд тусдаа синтаксийг санах шаардлагагүй.
ack 'vars+adds+'
Илүү төвөгтэй жишээ
ack '*s+[vd+.d+.d+]'
Ихэнхдээ та үр дүнгийн загварт тохирсон зүйлийг л хадгалахыг хүсдэг. --гаралтын сонголт (-o)
ack -o '*s+[vd+.d+.d+]'
Нэмж хэлэхэд, бид хаалт ашиглан олдсон хэсгийг сонгоод $[бүлгийн дугаар] хувьсагчаар дамжуулан гаралтад хандах боломжтой. Жишээлбэл,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack-д ашигтай сонголтууд бий - хүрээ-эхлэл и - хүрээний төгсгөлТэд хэзээ тусалдаг
Өгөгдөл нь нэг мөрөнд биш, харин олон мөрт хэлбэрээр хадгалагддаг.
Жишээлбэл, SQL кодтой файл байна

Баганын нэрийг задлаад үзье. Блок нь SELECT-ээр эхэлсэн мөрөөр эхэлж, FROM-ээр эхэлсэн мөрөөр төгсөнө.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Хайлтын илэрхийлэлд цэг, хаалт болон бусад тэмдэгтүүд орсон бол тэдгээрээс зугтахаас зайлсхийхийн тулд та сонголтыг ашиглаж болно. -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Файлтай ажиллах
Тодорхой өргөтгөлтэй файлуудын жагсаалтыг аваарай
ack -f --js
Сонголтыг ашиглан нэр нь P*-ээр эхэлсэн бүх js файлыг олоорой.-g).
ack -g --js '/Pa.+.js$'
Тохиргоо
Уг хэрэгсэл нь өөрийн тохиргооны файлтай. Та хэрэглэгчийн глобал тохиргооны файлтай (~/.ackrc) эсвэл тодорхой фолдерт зориулсан локал тохиргооны файлтай байж болно (та хавтас дотор .ackrc файл үүсгэх ёстой).
Тохиргооны файлд заасан ихэнх сонголтыг ажиллах үед гараар тохируулах боломжтой. Тэдгээрийн заримыг нь харцгаая.
Хайлт хийхдээ фолдерыг үл тоомсорло
--ignore-dir=distЗахиалгат файлын төрлийг нэмье —vue.
--type-add=vue:ext:js,vueТа одоо файлаас хайхдаа --vue сонголтыг ашиглаж болно. .vue. Жишээ нь: ack —vue програм.
Та мөн энэ сонголтын өргөтгөлүүдийн жагсаалтыг зааж өгч болно. Жишээ нь --vue ашиглах нь мөн боловсруулагдана .js файлууд.
Жижиглэсэн *.min.js гэх мэт файлуудыг үл тоомсорло
--ignore-file=match:/.min.js$/тохиргоо
CentOS
yum update -y && yum install ack -yUbuntu
apt-get update -y && apt-get install ack-grep -yMac OS
brew update && brew install ackВэбсайтаас суурилуулалт
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ackРедакторуудад зориулсан залгаасууд:
дүгнэлт
Эдгээр нь зөвхөн цөөн хэдэн онцлог шинж чанарууд юм. Функцуудын бүрэн жагсаалтыг ажиллуулах замаар олж болно:
ack –-help
# или
ack --manAck хэрэгсэл нь терминал дахь хайлтыг илүү хялбар, уян хатан болгодог. Мөн дамжуулах хоолойн тусламжтайгаар (ack -C 10 сайн уу | ертөнц) та файлын систем болон файл дотроос өгөгдлийг хайх, шүүх хүчирхэг хослол үүсгэж болно.
Эх сурвалж: www.habr.com
