Ack нь grep-ээс дээр

Миний амьдралыг хөнгөвчлөх хайлтын хэрэгслийн талаар би танд хэлэхийг хүсч байна. Би серверт нэвтрэн ямар нэг зүйл хайх шаардлагатай үед хамгийн түрүүнд хийх зүйл бол ack суулгасан эсэхийг шалгах явдал юм. Энэ хэрэгсэл нь grep-ийг маш сайн орлуулах бөгөөд тодорхой хэмжээгээр find and wc юм. Яагаад grep болохгүй гэж? Ack нь илүү сайн тохиргоотой, хүн унших боломжтой сонголтууд, Perl тогтмол илэрхийллүүд, тохиргооны системтэй. Хэрэв та терминалаар хайх дуртай (эсвэл хийх шаардлагатай) бол үүнийг туршиж үзэх хэрэгтэй.

Үндсэн шинж чанарууд

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-ээс дээр

Хэрэв танд хайлтанд нэмэлт контекст хэрэгтэй бол та зөвшөөрөл хүсч болно
өмнөх мөрүүдийг харуулах (-B) ба дараа (-A) олсон илэрхийлэл. Үүнийг хийхийн тулд сонголтын дараа харуулах мөрийн тоог зааж өгнө үү.

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

Ack нь grep-ээс дээр

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

Ack нь grep-ээс дээр

Хэрэв танд хоёулаа хэрэгтэй бол (-FROM)

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

Бас сонголт бий(-v) хайлтыг эргүүлэх, өөрөөр хэлбэл өгөгдсөн загвар агуулаагүй мөрүүдийг харуулах.

Тогтмол илэрхийлэл

Ack нь grep-ээс ялгаатай нь Perl-тэй нийцтэй илэрхийлэлүүдийг ашигладаг.
Миний хувьд энэ бол том давуу тал; Би ердийн илэрхийллийн хувьд тусдаа синтаксийг санах шаардлагагүй.

ack 'vars+adds+'

Ack нь grep-ээс дээр

Илүү төвөгтэй жишээ

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

Ack нь grep-ээс дээр

Ихэнхдээ та үр дүнгийн загварт тохирсон зүйлийг л хадгалахыг хүсдэг. --гаралтын сонголт (-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-ээс дээр

Сонголтыг ашиглан нэр нь P*-ээр эхэлсэн бүх js файлыг олоорой.-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 файлууд.

Жижиглэсэн *.min.js гэх мэт файлуудыг үл тоомсорло

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

тохиргоо

CentOS

yum update -y && yum install ack -y

Ubuntu

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

Mac 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

сэтгэгдэл нэмэх