Амьдралыг ихээхэн хөнгөвчлөх нэг хайлтын хэрэгслийн талаар би танд хэлэхийг хүсч байна. Би серверт очоод ямар нэг зүйл хайх шаардлагатай бол хамгийн түрүүнд хийх зүйл бол ack суулгасан эсэхийг шалгах явдал юм. Энэ хэрэгсэл нь grep, түүнчлэн find болон wc-г тодорхой хэмжээгээр орлуулах маш сайн хэрэгсэл юм. Яагаад grep болохгүй гэж? Ack нь илүү сайн тохиргоотой, хүн унших боломжтой сонголтууд, perl regex болон тохиргооны системтэй. Хэрэв та терминалаар хайх дуртай (шаардлагатай) бол үүнийг заавал туршиж үзэх хэрэгтэй.
Үндсэн шинж чанарууд
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+]'
Үр дүнд нь зөвхөн загварт тохирсон зүйлийг л үлдээхийг хүсдэг. --output сонголт энд туслах болно (-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 -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