Grep-komennon ymmärtäminen käytännön esimerkeillä tiedoston sisällön suodattamiseksi ja näyttämiseksi helposti
GREP
tarkoittaa "Global Regular Expression Print". Se on hyödyllinen Linuxin tarjoama komentoriviohjelma, jonka avulla voit etsiä tekstiriviä, jotka vastaavat käyttäjän antamaa mallia.
grep
ottaa syötteen käyttäjältä merkkijonojen tai sanojen muodossa, joita käyttäjä haluaa etsiä tietystä tiedostosta. Komento tarkistaa sitten käyttäjän tälle mallille määrittämästä tiedostosta ja palauttaa sitten rivit, jotka vastaavat annettua mallia.
Se tekee erinomaista työtä suodattamalla tiedoston sisällön, mikä helpottaa tehtäväämme etsiä tiettyä sisältöä yksittäisistä tai useista tiedostoista samanaikaisesti.
Tässä artikkelissa tarkastellaan järjestelmän toimintaa grep
komento ja joitain käytännön esimerkkejä yksityiskohtaisesti.
Vaihtoehdot saatavilla grep
komento
Nämä ovat joitain perusvaihtoehtoja, joita käytät usein grep
komento.
Vaihtoehto | Kuvaus |
-i | Kirjainkoolla välittömään hakuun |
-r | Voit etsiä rekursiivisesti kaikkia tiedostoja määritetystä hakemistosta ja sen alihakemistoista |
-c | Näyttääksesi merkkijonon näyttökertojen kokonaismäärän |
-v | Näyttääksesi yhteensopimattomat rivit |
-w | Suodata kyseiselle sanalle erikseen käytettynä |
Käyttämällä grep
komento
grep
komentoa käytetään yleensä putken (|
) apuohjelma. Se voidaan toteuttaa shell pipellä, kun haluat käyttää sitä joidenkin muiden Linux-komentojen kanssa. Siitä huolimatta, grep
voidaan käyttää myös yksittäin ilman putkea (|
) apuohjelma.
Katsotaanpa joitain tiedoston perussyntakseja grep
komento pipe-apuohjelman kanssa ja ilman.
Haluan ensin näyttää sinulle esimerkkitekstitiedoston, jota käytän havainnollistamaan grep
komento.
INTIA ON KAUNIS RAUHARAKASTAVIEN IHMISTEN MAA. Intia seisoo kolmella lainsäätäjän, toimeenpanovallan ja oikeuslaitoksen pilarilla. Intia on kaunis rauhaa rakastavien ihmisten maa. Intia välittää ihmisistä, koska sen resurssi on karteesiset koordinaatit kaikkien karteesisten koordinaattien tärkeys. Seuraavassa on kaksi tyhjää riviä. härkäkärryjen käyttö on kylässä yleinen näky maatalouden askareissa. Tämä on mallitiedoston loppu.
grep
käytetty putken kanssa ( | )apuohjelma
grep
komento voidaan toteuttaa yhdessä muiden Linux-komentojen kanssa shell-putkia käyttämällä. Kuten käyttämällä kissa
-komento näyttää tiedoston sisällön, mutta samalla putkittaa tulosteen käyttämällä grep
-komento näyttää vain sen sisällön, jonka haluat nähdä. Tämä tulee selvemmäksi, kun käymme esimerkin läpi.
Syntaksi:
[komento] | grep [merkkijono]
Esimerkki:
cat sample.txt | grep lainsäätäjä
Tässä olen käyttänyt kissa
-komento näyttää joitakin rivejä "sample.txt"-tiedostosta. Vain ne rivit tulee näyttää, jotka sisältävät sanan "lainsäätäjä" ja jättää muut rivit huomioimatta.
Lähtö:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature intia seisoo kolmella lainsäädäntövallan, toimeenpanovallan ja oikeuslaitoksen pilarilla. gaurav@ubuntu:~/työtila$
grep
käytetty ilman putkea ( | )apuohjelma
grep
voidaan käyttää jopa suoraan yksittäisenä komentona ilman putkea ( |
) apuohjelma.
Syntaksi:
grep [haettava merkkijono] [tiedostonimi]
Esimerkki:
grep Intia sample.txt
Lähtö:
Intia on kaunis rauhaa rakastavien ihmisten maa. Intia välittää ihmisistä voimavaranaan
Näin ollen olen käyttänyt grep
komento suoraan suodattaaksesi rivit, jotka sisältävät merkkijonon "Intia" tekstitiedostosta "sample.txt".
Kirjainkoolla ei ole merkitystä hakutoiminnolla grep
komento
Linux on erittäin varovainen kirjainkoon herkkyyden suhteen, kun käynnistämme komennot päätteellä. Tämä edellyttää, että käyttäjä on varovainen komentoon lisätyn merkkijonon kirjainkoon suhteen.
Katsotaanpa tätä esimerkin kautta.
grep peace sample.txt
Tässä tapauksessa emme saa tulosta, koska mallitiedostossa ei ole sanaa "rauha". Meillä on sana "Peace" isolla P-kirjaimella. Sana on sama, mutta kun käytämme grep
-komento ilman vaihtoehtoja, se etsii tiedostosta tarkan vastaavuuden, huomioimatta kirjainkoon muutoksia.
Tämän epäselvyyden välttämiseksi voit yksinkertaisesti käyttää -i
vaihtoehto, joka kirjaimellisesti kertoo grep
komento "Unohda tapaus, johon olen laittanut merkkijonon, ja etsi vain tiedostosta kaikki vastaavat kuviot."
Syntaksi:
grep -i [merkkijono] [tiedostonimi]
Esimerkki:
grep -i peace sample.txt
Lähtö:
INTIA ON KAUNIS RAUHARAKASTAVIEN IHMISTEN MAA. Intia on kaunis rauhaa rakastavien ihmisten maa.
Kaikki vastaavat rivit näytetään riippumatta tapauksesta, jossa vastaava merkkijono on.
Rekursiivinen haku käyttäen grep
komento
The -r
-vaihtoehto etsii kaikki tiedostot hakemistosta ja kaikista sen alihakemistoista, jotka vastaavat käyttäjän komennossa antamaa merkkijonomallia.
Syntaksi:
grep -i -r [merkkijono] [tiedostopolku]
Esimerkki:
grep -i -r tomcat /home/gaurav/työtila
Merkkijono tässä on "tomcat" ja se etsitään hakemistotyötilasta. Kaikki "työtila"-hakemiston alihakemistot ja tiedostot myös tarkistetaan vastaamaan annettua merkkijonomallia.
Lähtö:
./context_log.policy:// catalina.policy - Tomcat 7:n suojauskäytäntöjen käyttöoikeudet ./context_log.policy:// Huomautus: Jos tomcat-juli.jar on paikassa ${catalina.base} eikä ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR:t ./catalina.properties:# - Tomcat API JARit ./catalina.properties:# - Tomcat JARit ./catalina.properties:# - Yleiset ei-Tomcat JARit ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catal:#ina. tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.500 /server.xml: polkunimi="conf/tomcat-users.xml" /> ./server.xml:
MERKINTÄ: Kun käytät -r
vaihtoehto kanssa grep
-komennolla meidän on annettava tiedoston polku, ei tiedoston nimeä
Hae vain kokonaisia sanoja grep
komento
Usein on niin, että etsit yhtä sanaa, mutta päädyt täyttämään terminaalisi vastaavilla riveillä, jotka sisältävät vastaavan sanasi, mutta eivät yksittäisenä sanana. Saatat nähdä rivit, jotka sisältävät joitakin sanoja, joiden alaosa on kirjoittamasi merkkijono.
Oletko hämmentynyt tästä? Älä huoli, se on paljon helpompi ymmärtää, kun saat esimerkin.
Esimerkki:
Tässä haluan etsiä yksittäistä sanaa "cart" ja näyttää kaikki rivit, jotka vastaavat tätä sanaa tiedostossa "sample.txt".
grep -i cart sample.txt
Lähtö:
Karteesiset koordinaatit kaikkien suorakulmaisten koordinaattien tärkeys. härkäkärryjen käyttö on kylässä yleinen näky maataloustöissä Kärryt katosivat pojan jättäessä sen irti.
Tulosteessa voit havaita, että sana 'Cartees' sisältää myös sanan 'kärry' ja siten myös sanan 'Cartees' sisältävät rivit näytetään, vaikka emme haluakaan niiden näkyvän.
Voit käyttää -w
vaihtoehto kanssa grep
komento tämän epäselvyyden ratkaisemiseksi.
Syntaksi:
grep -i -w [merkkijono] [tiedostonimi]
Esimerkki:
grep -i -w cart sample.txt
Lähtö:
härkäkärryjen käyttö on kylässä yleinen näky maatalouden askareissa. Kärry katosi, kun poika jätti sen irti.
Nyt, kun olet käyttänyt -w
vaihtoehto kanssa grep
saat vain rivit, joilla sanaa "kärry" käytetään kokonaisuudessaan.
Käänteinen haku käyttämällä grep
komento
grep
komentoa voidaan käyttää myös päinvastoin. Voimme käyttää grep
komento päinvastoin piilottamalla vastaavat rivit ja näyttämällä vain ne rivit, joista vastaavuutta ei löydy. Voit tehdä tämän käyttämällä -v
vaihtoehto kanssa grep
komento.
Syntaksi:
grep -i -v [merkkijono] [tiedostonimi]
Esimerkki:
grep -i -v resurssi sample.txt
Lähtö:
INTIA ON KAUNIS RAUHARAKASTAVIEN IHMISTEN MAA. Intia seisoo kolmella lainsäätäjän, toimeenpanovallan ja oikeuslaitoksen pilarilla. Intia on kaunis rauhaa rakastavien ihmisten maa. karteesiset koordinaatit kaikkien karteesisten koordinaattien tärkeys. härkäkärryjen käyttö on kylässä yleinen näky maatalouden askareissa. Tämä on mallitiedoston loppu.
Tulosteessa näytetään kaikki muut rivit paitsi rivi, joka sisältää sanan "resurssi".
Vastaavan merkkijonon esiintymien laskeminen
Tuotos grep
komento on yleensä hyvin pitkä, jos tiedoston tiedot ovat laajoja. Mitä enemmän otteluita, sitä pidempiä ovat tulosteet grep
komento. Linux tarjoaa sinulle vaihtoehdon, jossa voit näyttää ottelun esiintymisten lukumäärän.
Syntaksi:
grep -i -c [merkkijono] [tiedostonimi]
Esimerkki:
grep -i -c intia sample.txt
Lähtö:
gaurav@ubuntu:~/työtila$ grep -i -c intia sample.txt 4 gaurav@ubuntu:~/työtila$
Tässä tulos on numero, joka on sanan "Intia" esiintymisten lukumäärä tiedostossa sample.txt.
MERKINTÄ: Olen käyttänyt -i
Vaihtoehto jokaisessa esimerkissä vain ollaksesi turvassa kirjainkoon herkkyysongelman kanssa. Jos olet varma etsimäsi sanan kirjainkoosta, voit turvallisesti jättää sanan pois -i
vaihtoehto.
Johtopäätös
Olemme oppineet sen peruskäytön grep
komento Linux-järjestelmissä tässä opetusohjelmassa. Opimme myös esittelemään erilaista sisältöä, joka sopii parhaiten tarpeisiimme ja olemaan ruuhkautumatta terminaaliin runsailla jonoilla. grep
komento säästää varmasti aikaa, jos sitä käytetään suurten tietojoukkojen skannaukseen.