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 tukee hakua tiedostotyypin mukaan. Etsitään esimerkiksi moduulin versio json-tiedostoista.
ack --json '"version":s+"d+.d+.d+"'
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.
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
Lisäksi voimme saada yksityiskohtaisen raportin kunkin tiedoston esiintymien määrästä käyttämällä (-l)
ack --js -w -cl mysql
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/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
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+'
Monimutkaisempi esimerkki
ack '*s+[vd+.d+.d+]'
Usein haluat jättää tuloksiin vain sen, mikä vastaa mallia. Vaihtoehto --output auttaa tässä (-o)
ack -o '*s+[vd+.d+.d+]'
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+)]'
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
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
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.
Tiedostojen käsittely
Hanki luettelo tiedostoista, joilla on tietty tiedostopääte
ack -f --js
Etsi kaikki js-tiedostot, joiden nimi alkaa P*:lla käyttämällä vaihtoehtoa (-g).
ack -g --js '/Pa.+.js$'
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