Egy kereső segédprogramról szeretnék mesélni, amely nagyban leegyszerűsíti az életet. Amikor a kiszolgálóhoz érek, és keresnem kell valamit, először ellenőrizni kell, hogy az ack telepítve van-e. Ez a segédprogram kiválóan helyettesíti a grep-et, valamint bizonyos mértékig a find-ot és a wc-t is. Miért nem grep? Az Ack-nek szebb beállításai vannak, több ember által olvasható opciók, perl regex és konfigurációs rendszer. Ha szeret (kell) keresgélni a terminálon, akkor mindenképpen próbálja ki.
Alapvető funkciók
Az Ack alapértelmezés szerint rekurzív, és mindig jó ötlet kevesebb opciót írni.
Használhatunk zászlót -wmegmondani a segédprogramnak, hogy keressen szóhatárokkal (szóközökkel, perjelekkel stb.) körülvett mintánkat.
ack -w mysql
Az Ack támogatja a fájltípus szerinti keresést. Például keressük meg a modul verzióját a json-fájlokban.
ack --json '"version":s+"d+.d+.d+"'
A támogatott fájltípusok teljes listája megtekinthető a következő használatával:
ack --help-types
Gyakran meg kell számolni, hogy egy kifejezés hányszor jelenik meg egy naplófájlban, például annak megértéséhez, hogy a szkript mennyi adatot dolgozott fel.
Megszámoljuk, hogy a folyamat hányszor fordul elő a test.log fájlban, figyelmen kívül hagyva az esetet (-i).
Nem csak egy adott fájlban, hanem egy csoportban is megszámolhatjuk az előfordulásokat. Végezzük el a mysql szó előző keresését: számoljuk meg a szavak előfordulásának számát (-Val vel) a *.js fájlokban(--js), kivéve azokat a fájlokat, amelyekben nem található semmi (-h) és az eredmény összegzése.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Ezen kívül részletes jelentést kaphatunk az egyes fájlokban előforduló előfordulások számáról a (-l)
ack --js -w -cl mysql
Ha további kontextusra van szüksége a kereséshez, kérdezze meg az ack-t
sorokat mutat (-B) és utána (-A) a talált kifejezésből. Ehhez az opció után meg kell adni a megjelenítendő sorok számát.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
És ha mindkettőre szüksége van, akkor használja (-VAL VEL)
ack --js --column -C 2 "query.once('" ./lib/
Van még egy lehetőség (-v) a keresés megfordításához, azaz olyan vonalak megjelenítéséhez, amelyek nem tartalmaznak adott mintát.
Reguláris kifejezés
Az Ack a grep-től eltérően Perl-kompatibilis kifejezéseket használ.
Számomra ez egy nagy előny; nem kell külön szintaxist emlékeznem a reguláris kifejezésekhez.
ack 'vars+adds+'
Bonyolultabb példa
ack '*s+[vd+.d+.d+]'
Gyakran csak azt akarja meghagyni az eredmények között, ami megfelel a sablonnak. A --output opció segít itt (-o)
ack -o '*s+[vd+.d+.d+]'
Ezenkívül a zárójelek segítségével kiválaszthatjuk a talált részt, és elérhetjük a kimenetben a $[csoportszám] változón keresztül. Például,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack hasznos lehetőségeket kínál --tartomány-start и --tartomány vége. Amikor segítenek
Az adatok nem egy sorban, hanem többsoros formában tárolódnak.
Például van egy fájl sql kóddal
Vegyük ki az oszlopneveket. A blokk eleje egy SELECT karakterrel kezdődő sor, a vége pedig egy FROM karakterrel kezdődő sor lesz.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Ha a keresési kifejezés speciális karaktereket tartalmaz, például pontot, zárójelet és másokat, akkor annak érdekében, hogy ne kerülje el őket a használatával, használhatja a lehetőséget -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Fájlokkal való munka
Szerezze meg a fájlok listáját egy adott kiterjesztéssel
ack -f --js
Keresse meg az összes P*-val kezdődő js-fájlt a (-g).
ack -g --js '/Pa.+.js$'
Configuration
A segédprogramnak saját konfigurációs fájlja van. A felhasználó globális konfigurációja (~/.ackrc) és helyi konfigurációja is lehet egy adott mappához (a mappában létre kell hoznia egy .ackrc fájlt).
A konfigurációkba írt opciók többsége manuálisan megadható híváskor. Nézzünk meg ezek közül néhányat.
A mappa figyelmen kívül hagyása kereséskor
--ignore-dir=dist
Adjunk hozzá egy egyéni fájltípust -vue.
--type-add=vue:ext:js,vue
Most már használhatja a --vue opciót a fájlok kereséséhez .vue. Például: ack --vue App.
Ehhez a beállításhoz megadhatja a bővítmények listáját. Például itt a -vue használatakor a következők kerülnek feldolgozásra: .js fájlokat.
Figyelmen kívül hagyja a fájlokat, például a kicsinyített *.min.js fájlokat
--ignore-file=match:/.min.js$/
Telepítés
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
Telepítés a helyszínről
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Beépülő modulok szerkesztőknek:
Következtetés
Ez nem minden lehetőség. A funkciók teljes listája a következő futtatással tekinthető meg:
ack –-help
# или
ack --man
Az ack segédprogram lehetővé teszi, hogy kényelmesebbé és rugalmasabbá tegye a terminálban történő keresést. És csővezeték használatával (ack -C 10 hello | ak világ) hatékony kombinációt hozhat létre az adatok kereséséhez és szűréséhez a fájlrendszerben és magukban a fájlokban.
Forrás: will.com