Ack më mirë grep

Deshiroj të flas për një mjet kërkimi që e bën jetën shumë më të lehtë. Kur hyjë në një server dhe dua të kërkoj diçka, gjëja e parë që bëj është të kontrolloj nëse ack është instaluar. Ky mjet është një zëvendësim i shkëlqyer për grep, si dhe disi për find dhe wc. Pse jo grep? Ack ka konfigurime më të mira si bazë, opsione më të lexueshme për njeriun, shprehje të rregullt Perl dhe një sistem konfigurimi. Nëse ju pëlqen të kërkoni përmes terminalit, patjetër që duhet ta provoni atë.

Mundësitë bazë

Ack është rekurziv nga e drejta, dhe gjithmonë është mirë të shkruash më pak opsione.

Mund të përdorim flamurin -w, për t'i thënë mjetit të kërkojë një shembull të modelit tonë, i rrethuar nga kufijtë e fjalëve (karaktere hapësire, pjesëz dhe të tjerë).

ack -w mysql

Ack më mirë grep

Ack mbështet kërkimin sipas llojit të skedarëve. Për shembull, le të gjejmë versionin e modulit në skedarët json.

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

Ack më mirë grep

Lista e plotë e llojeve të mbështetur të skedarëve mund të shikohet duke përdorur:

ack --help-types

Shpesh na nevojitet të llogarisim sa herë shfaqet një frazë në një skedar log, për shembull, për të kuptuar sa shumë të dhëna ka përpunuar skripti.

Ack më mirë grep
Llogarisim sa herë process shfaqet në skedarin test.log, pa marrë parasysh regjistrin (-i).

Mund të llogarisim shfaqjet jo vetëm në një skedar të caktuar, por në një grup. Le të përmirësojmë kërkimin e mëparshëm për fjalën mysql: të llogarisim numrin e shfaqjeve të fjalëve (-c) në skedarët *.js (—js), duke përjashtuar skedarët ku nuk ka asgjë të gjetur (-h) dhe duke iu mbështetur rezultatit.

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

Ack më mirë grep

Për më tepër, mund të marrim një raport të detajuar për numrin e shfaqjeve në çdo skedar duke përdorur (-l)

ack --js -w -cl mysql

Ack më mirë grep

Nëse ju nevojitet kontekst shtesë për kërkimin, mund të kërkoni që ack
të tregojë rreshtat para (-B) dhe pas (-A) shprehjes të gjetur. Për këtë, duhet të specifikoni pas opsionit numrin e rreshtave që dëshironi të tregoni.

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

Ack më mirë grep

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

Ack më mirë grep

Dhe nëse nevojiten të dyja, përdorni (-C)

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

Ka edhe një opsion (-v) për të invertuar kërkimin, dmth për të treguar rreshtat ku nuk ka modelin e caktuar.

Shprehjet e rregullta

Ack, ndryshe nga grep, përdor shprehje të përputhshme me Perl.
Për mua, kjo është një avantazh i madh, sepse nuk duhet të mbaj mend një sintaksë të veçantë për shprehjet e rregullta.

ack 'vars+adds+'

Ack më mirë grep

Shembulli më i komplikuar

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

Ack më mirë grep

Shpesh dëshirojmë të lëmë vetëm atë që përputhet me modelin në rezultatet. Këtu ndihmon opsioni —output (-o)

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

Ack më mirë grep

Gjithashtu, me ndihmën e kllapave, mund të nxjerrim pjesën e gjetur dhe t'i referohemi asaj në daljen përmes variablës $[numri i grupit]. Për shembull,

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

Ack më mirë grep

Ack ka disa opsione të dobishme —range-start dhe —range-end. Ato ndihmojnë kur
të dhënat nuk ruhen në një rresht, por në një format shumë-rresht.

Për shembull, ka një skedar me kod sql

Ack më mirë grep

Le të nxjerrim emrat e kolumnave. Fillimi i blokut do të jetë një rresht që fillon me SELECT, dhe përfundimi një rresht që fillon me FROM.

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

Ack më mirë grep

Nëse në shprehjen e kërkimit përfshihen simbolet e veçantë si pika, kllapa e përparme dhe të tjerë, atëherë për të mos i escapuar ato me , mund të përdorim opsionin -Q.

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

Ack më mirë grep

Puna me skedarët

Merrni një listë skedarësh me një zgjatje të caktuar

ack -f --js

Ack më mirë grep

Gjeni të gjitha skedarët js, emri i të cilëve fillon me P*, duke përdorur opsionin (-g).

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

Ack më mirë grep

Konfigurimi

Ky mjet ka skedarin e tij të konfigurimit. Mund të kemi si një konfigurim global për përdoruesin (~/.ackrc), ashtu edhe një lokal për një dosje të caktuar (duhet të krijosh një skedari .ackrc në dosje).

Shumica e opsioneve që shkruhen në konfigurime mund të shkruhen dorezi kur thirren. Le të shqyrtojmë disa prej tyre.

Injoroni dosjen gjatë kërkimit

--ignore-dir=dist

Shtojmë një lloj skedari të personalizuar —vue.

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

Tani mund të përdorim opsionin —vue, për të kërkuar në skedarët .vue. Për shembull: ack —vue App.
Në këtë rast, mund të specifikoni një listë zgjatjesh për këtë opsion. Për shembull, këtu kur përdoret —vue, skedarët .js gjithashtu do të përpunohen.
--ignore-file=match:/.min.js$/

Игнорировать файлы, например, минифицированные *.min.js

yum update -y && yum install ack -y

Instalimi

CentOS

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

Ubuntu

Mac OS

brew update && brew install ack

Instalimi nga faqja

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

Plugins për redaktuesit:

VSCode

Përfundimi

ack –-help # ose ack --man

Mjeti ack lejon të bëni kërkimin në terminal më të rehatshëm dhe fleksibël. Dhe me anë të pipeline (

ack -C 10 hello | ack world) mund të krijoni një kombinat të fuqishëm për kërkimin dhe filtrimin e të dhënave në sistemin e skedarëve dhe në vetë skedarët.Deshiroj të flas për një mjet kërkimi që e bën jetën shumë më të lehtë. Kur hyjë në një server dhe dua të kërkoj diçka, gjëja e parë që bëj është të kontrolloj nëse ack është instaluar. Ky mjet është një zëvendësim i shkëlqyer për grep, si dhe disi për find dhe wc. Pse jo grep? Ack ka konfigurime më të mira si bazë, opsione më të lexueshme për njeriun.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster