egrep: esempi di cumandamentu in GNU / Linux

egrep

grep hè unu di i strumenti i più aduprati nantu à a linea di cummanda GNU / Linux. Malgradu esse un strumentu assai sèmplice, vi permette di fà un grande numeru di operazioni. Hè adupratu in particulare cù i tubi, per esse capace di situà punti specifici in u risultatu di un cumandamentu precedente, etc. Ma ci hè ancu un strumentu cunnisciutu cum'è egrep chì hè equivalente à esecutà grep cù l'opzione -E.

L'e vene da "Extended regex", chì hè ciò chì attiva l'opzione -E è ciò chì avete in egrep per difettu senza aduprà quella opzione. Hè cusì, pudete aduprà u spressione regulare stese. In questu tutoriale ùn andaraghju micca à spiegà ciò chì sò l'espressioni regulari, cumu si ponu aduprà è chì tippi sò in * nix. Vi mostreraghju solu esempi pratichi di alcune cose utili chì pudete fà cù egrep ...

grep, egrep è fgrep sò simili. In fattu, egrep hè equivalente à grep -E è fgrep hè equivalente à grep -F. Hè cusì, in u casu chì ci cuncerna, interpreterà ancu i mudelli cum'è spressioni regulare.

Pudete ancu cerca una linea o una parolla in unu o più fugliali, cume hè ancu u casu di grep. Per esempiu, imagine chì vulete cercà a parolla ubuntu in un fugliale chjamatu snap.txt è ancu in tutti i fugliali .txt in u repertoriu attuale:

egrep ubuntu snap.txt

egrep ubuntu *.txt

A ricerca pò ancu esse ricursivu Per circà u cuntenutu sanu sanu di u repertoriu attuale:

egrep -r "hola mundo" *

Finu à avà, e parolle o stringhe esatte sò state ricercate, vale à dì, tenendu contu di maiuscule è minuscule (maiuscule / minuscule), ma se vulete fà in modu insensibile, ùn importa micca se sò maiuscule o minuscule, pudete aduprà ciò chì seguita (se aghjunte w trova solu partite cumplette):

egrep -i "ejemplo" documento.txt

egrep -iw "ejemplo" documento.txt

Mostra, micca e cuincidenze, ma i nomi di fugliale induve sò stati trovati questi partiti:

egrep -l hola *.txt

Mustrà solu u mudellu o a parolla cercatu in un documentu:

egrep -o printf hola.c

Arricurdatevi chì pudete aduprà tutte e pussibilità chì pudete imaginà. Pudete combinà parechje di l'opzioni viste prima, o pudete cumplementàle cù altre opzioni cum'è -A n è -B n, induve n u numeru di linee chì vulete mustrà prima (Prima) è dopu (Dopu) di a partita o tramindui à tempu (C), da pudè vede ciò chì circonda a partita:

egrep -A 2 "printf" hola.c

egrep -B 2 "printf" hola.c

egrep -C 2 printf hola.c

Cacciate e linee chì cuntenenu una partita è mostranu solu quelle chì ùn currispondenu micca:

egrep -v "dos" números.doc

O se preferite, pudete aduprà parechje parolle o partite cù -e. Per esempiu:

egrep -v -e "uno" -e "dos" -e "tres" números.txt

Se utilizate -c pò cuntà solu u numeru di partite, o invirtitelu cù -v per vede u numeru di linee inaccordate. Per esempiu:

egrep -c "include" main.c

egrep -v -c "include" main.c

È ancu mustrà u numeru di linea induve a partita hè accaduta, è ancu a pusizione chì occupa rispettivamente:

egrep -n "void" hola.c

egrep -o -b "printf" hola.c

È cù u spressione regulare e so capacità ponu esse allargate. Per esempiu, truvate una linea chì principia cù Bonghjornu è finisce cù addiu, o chì principia cù Bonghjornu seguitata da qualunque cosa è allora u match bye appare rispettivamente:

* Correzione di u cumandimu seguente: grazie à u cummentariu di u lettore Manuel Alcocer aghju pussutu mudificà u cumandimu seguente, postu chì ci hè statu un errore.

egrep '^Hola.*adiós$' ejemplo.txt

egrep "Hola.*adiós" ejemplo.txt

Ma se vi dumandate nantu à a differenza cù grep, eccu un esempiu chì li farà chjaru ... In u casu di aduprà grep senza -E duverete aduprà u sequenze di fughje in modu chì interpreta i caratteri speciali cum'è tali, altrimenti interpretaria u mudellu cum'è tale senza tene li in contu. D'altra parte, cù egrep o grep -E li tenerà in contu. Per esempiu:
grep '^no\(fork\|group\)' /etc/group

Sarebbe equivalente à:

grep -E '^no(fork|group)' /etc/group
egrep '^no(fork|group)' /etc/group

Hè cusì, cercaria e linee currispondenti chì cumincianu cù nofork o nogruppu. Ma se avete adupratu a prima espressione di grep senza e sequenze di fuga, ciò chì averia da fà hè circà u mudellu cuncretu innò (furchetta | gruppu):

grep 'no(fork|group)' /etc/group

Pudete ancu circà catene alfanumeriche, O valori specifici, cum'è per localizà certi IP:
cat /etc/networks | egrep "192.168.1.[5-9]"
cat /etc/networks | egrep "192.168.[1-3].[5-9]"
cat /etc/networks | egrep "192.168.1.[0-3]|[5-9]"
egrep 192.168.4.[10,40] networks

Se preferite, pudete aduprà altre espressioni regulare per fà ricerche più specifiche. Per esempiu | truvà unu cuincidenza o l'altru:

egrep -i '^(printf|scanf)' hola.c

Pudete ancu truvà maiuscule, minuscule, solu caratteri alfabetichi, o alfanumerichi, ecc., aduprendu altre spressioni cum'è: [: alnum:], [: alpha:], [: cifra:], [: inferiore:], [: print:], [: punct:], [: space:], [: supranu:], ecc. Per esempiu, per circà maiuscule:
egrep [[:upper:]] diccioario

Speru chì vi aiuti ... Prestu vi spiegheraghju espressioni regulare in un articulu dedicatu specificamente à questu ...


U cuntenutu di l'articulu aderisce à i nostri principii di etica edituriale. Per signalà un errore cliccate quì.

5 cumenti, lasciate i toi

Lasciate u vostru cummentariu

U vostru indirizzu email ùn esse publicatu.

*

*

  1. Responsabile di i dati: Miguel Ángel Gatón
  2. Scopu di i dati: Cuntrolla SPAM, gestione di cumenti.
  3. Legitimazione: U vostru accunsentu
  4. Cumunicazione di i dati: I dati ùn seranu micca cumunicati à terzi, eccettu per obbligazione legale.
  5. Archiviazione di dati: Base di dati ospitata da Occentus Networks (UE)
  6. Diritti: In ogni mumentu pudete limità, recuperà è cancellà e vostre informazioni.

  1.   Immagine segnaposto Manuel Alcocer dijo

    Bona notte.

    Uni pochi di rimarche ...

    Spiegate u cumandimu 'egrep' ma ùn mette micca a differenza trà 'egrep' è 'grep', chì duverebbe esse ciò chì hè quì.

    Per esempiu:
    Cù grep: ip -4 a | grep '[0-9] \ +'
    Cù egrep: ip -4 a | egrep '[0-9] +'

    Ahh, è questu hè sbagliatu, 'egrep "Hello. * Bye" example.txt'; u successu quì si faci quandu ci hè una linea in u fugliale chì cuntene a stringa 'Hello' seguitata da qualunque cosa è seguitata da 'addiu', a linea pò davveru cumincià è finisce cù qualunque cosa.

    Questu seria ciò chì l'articulu dice:
    egrep '^ Hello. * addiu $' example.txt

    E tutte l'opzioni, o guasi tutte (ùn mi fermu micca à verificallu), sò opzioni di 'grep' micca di 'egrep' solu.

    Best regards.

    1.    Isaac dijo

      Grazie per avè segnalatu quellu errore. Ciò chì cummentate annantu à l'espressioni regulare, l'aghju dighjà messu in u secondu paràgrafu. Dedicaraghju un articulu specificu per elli, perchè ci sò assai è questu articulu duveria troppu longu. Un salutu!

      1.    Immagine segnaposto Manuel Alcocer dijo

        Salutu di novu, Isaccu.

        In u sicondu paràgrafu si dice in fondu, o duverebbe dittu, chì 'egrep' hè un alias di 'grep -E', ma ùn date micca un esempiu di usu di 'egrep' cun qualchì spressione regulare chì hè scritta diversamente da quandu hè aduprata da ' grep '.

        Dedicà un articulu à spiegà spressioni regulare estese mi pare audace, frà altre cose perchè ci sò siti cum'è questu chì ùn facenu micca publicità è facenu un travagliu informativu assai impurtante per a cumunità GNU: https://www.rexegg.com/

        Ùn scrivu micca quì per u trolling, a mo intenzione cun tuttu questu hè chì se qualcunu leghje sta voce per vede ciò chì face "egrep" o "grep", per piacè fighjate altre fonti, sta voce ùn pò esse un riferimentu à nunda, spiega pocu, male, offre informazioni superfluose è pò esse cunfusione, soprattuttu per quelli chì ùn anu alcuna cunniscenza di GNU è di i putenti strumenti chì offre.

        Infine, avete aghjustatu è riparatu u bug chì aghju indicatu dopu u mo primu cummentariu (^ $). Cum'è in altri siti, duverebbe avè citatu a persona chì hà fattu a currezzione, o almenu dì chì si tratta di una currezzione, chì face parte di a basa GNU, a stessa basa cù a quale stu blog hè statu iniziatu è hè statu persu.

        A salutazione.

        1.    Isaac dijo

          Grazie per u vostru puntu di vista.

  2.   fsafs dijo

    ffff