Ack on parempi kuin grep

Haluan kertoa sinulle yhdestä hakutyökalusta, joka yksinkertaistaa elämää huomattavasti. Kun pääsen palvelimelle ja minun on etsittävä jotain, tarkistan ensin, onko ack asennettu. Tämä apuohjelma on erinomainen korvike grepille, samoin kuin jossain määrin find ja wc. Miksei grep? Ackilla on paremmat asetukset heti valmiina, enemmän ihmisen luettavissa olevia vaihtoehtoja, perl regex ja konfigurointijärjestelmä. Jos haluat (täytyy) etsiä terminaalin kautta, sinun kannattaa ehdottomasti kokeilla sitä.

Perusominaisuudet

Ack on oletuksena rekursiivinen, ja vähemmän vaihtoehtoja on aina hyvä kirjoittaa.

Voimme käyttää lippua -wkäskeä apuohjelmaa etsimään esimerkkiä mallistamme, jota ympäröivät sanarajat (tyhjät välilyönnit, kauttaviivat jne.).

ack -w mysql

Ack on parempi kuin grep

Ack tukee hakua tiedostotyypin mukaan. Etsitään esimerkiksi moduulin versio json-tiedostoista.

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

Ack on parempi kuin grep

Täydellinen luettelo tuetuista tiedostotyypeistä voidaan tarkastella käyttämällä:

ack --help-types

Usein sinun on laskettava, kuinka monta kertaa lause esiintyy esimerkiksi lokitiedostossa, jotta ymmärrät, kuinka paljon dataa komentosarja käsitteli.

Ack on parempi kuin grep
Laskemme kuinka monta kertaa prosessi esiintyy test.log-tiedostossa, ottamatta huomioon tapausta (-i).

Emme voi laskea esiintymiä vain yhdessä tietyssä tiedostossa, vaan myös ryhmässä. Viimeistele edellinen haku sanalle mysql: laske sanojen esiintymien lukumäärä (-Kun) *.js-tiedostoissa(--js), pois lukien tiedostot, joista mitään ei löytynyt (-h) ja yhteenveto tuloksesta.

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

Ack on parempi kuin grep

Lisäksi voimme saada yksityiskohtaisen raportin kunkin tiedoston esiintymien määrästä käyttämällä (-l)

ack --js -w -cl mysql

Ack on parempi kuin grep

Jos tarvitset lisäkontekstia hakuun, voit kysyä ack
näytä rivit aina (-B) ja jälkeen (-A) löydetystä lausekkeesta. Tätä varten sinun on määritettävä vaihtoehdon jälkeen näytettävien rivien määrä.

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

Ack on parempi kuin grep

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

Ack on parempi kuin grep

Ja jos tarvitset molempia, käytä (-C)

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

On myös vaihtoehto (-v) kääntääksesi haun, eli näyttääksesi viivoja, jotka eivät sisällä tiettyä kuviota.

Tavallinen ilme

Ack, toisin kuin grep, käyttää Perl-yhteensopivia lausekkeita.
Minulle tämä on iso plussa; minun ei tarvitse muistaa erillistä syntaksia säännöllisille lausekkeille.

ack 'vars+adds+'

Ack on parempi kuin grep

Monimutkaisempi esimerkki

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

Ack on parempi kuin grep

Usein haluat jättää tuloksiin vain sen, mikä vastaa mallia. Vaihtoehto --output auttaa tässä (-o)

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

Ack on parempi kuin grep

Lisäksi sulkuja käyttämällä voimme valita löydetyn osan ja päästä siihen ulostulossa muuttujan $[group number] kautta. Esimerkiksi,

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

Ack on parempi kuin grep

Ackilla on hyödyllisiä vaihtoehtoja --alueen-aloitus и --alueen loppu. Ne auttavat kun
Tietoja ei tallenneta yhdelle riville, vaan monirivisessä muodossa.

Esimerkiksi tiedostossa on sql-koodi

Ack on parempi kuin grep

Poimitaan sarakkeiden nimet. Lohkon alku on rivi, joka alkaa kirjaimella SELECT, ja loppu on rivi, joka alkaa sanoilla FROM.

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

Ack on parempi kuin grep

Jos hakulauseke sisältää erikoismerkkejä, kuten pisteen, sulkumerkit ja muita, voit käyttää vaihtoehtoa, jotta et vältä niitä käyttämällä . -Q.

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

Ack on parempi kuin grep

Tiedostojen käsittely

Hanki luettelo tiedostoista, joilla on tietty tiedostopääte

ack -f --js

Ack on parempi kuin grep

Etsi kaikki js-tiedostot, joiden nimi alkaa P*:lla käyttämällä vaihtoehtoa (-g).

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

Ack on parempi kuin grep

kokoonpano

Apuohjelmalla on oma asetustiedosto. Sinulla voi olla sekä yleinen konfiguraatio käyttäjälle (~/.ackrc) että paikallinen tietylle kansiolle (sinun on luotava .ackrc-tiedosto kansioon).

Useimmat asetuksiin kirjoitetut vaihtoehdot voidaan määrittää manuaalisesti, kun niitä kutsutaan. Katsotaanpa muutamia niistä.

Ohita kansio haun aikana

--ignore-dir=dist

Lisätään mukautettu tiedostotyyppi -vue.

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

Nyt voit käyttää --vue-vaihtoehtoa tiedostojen etsimiseen .vue. Esimerkiksi: ack --vue App.
Voit määrittää tälle vaihtoehdolle luettelon laajennuksista. Esimerkiksi tässä, kun käytetään -vuea, käsitellään seuraavaa:
.js-tiedostot.

Ohita tiedostoja, esimerkiksi pienennetty *.min.js

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

Asennus

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

Asennus sivustolta

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

Lisäosat editoreille:

Johtopäätös

Nämä eivät ole kaikki mahdollisuudet. Täydellinen luettelo toiminnoista voidaan tarkastella suorittamalla:

ack –-help
# или
ack --man

Ack-apuohjelman avulla voit tehdä hausta päätelaitteessa helpompaa ja joustavampaa. Ja käyttämällä putkia (ack -C 10 hei | ack maailma) voit luoda tehokkaan yhdistelmän tietojen etsimiseen ja suodattamiseen tiedostojärjestelmästä ja itse tiedostoista.

Lähde: will.com

Lisää kommentti