GNU/Linux >> Linux Esercitazione >  >> Linux

grep estrarre l'intervallo di numeri

Vuoi il token di espressione regolare "alternanza" | per dire "o questo o quello":

grep -E '2019-(09|10)-' file

Vedi Perché la mia espressione regolare funziona in X ma non in Y? per un po' di background sui token delle espressioni regolari e sulle classi regex (di base, estese, ecc.).


grep non è bravo a gestire i numeri, non sa confrontarli aritmeticamente. Per questo, potresti voler usare qualcosa come awk o Perl. Non è molto importante qui, dato che è facile elencare semplicemente 09 e 10 , ma se avessi qualcosa come un intervallo compreso tra 97 e 123 sarebbe molto peggio.

Per esempio. questo sceglierebbe l'anno, il mese e il giorno come numeri e stamperebbe le righe in cui il giorno è compreso tra 27 e 31:

perl -ne 'print if /Last Password Change: ([0-9]+)-([0-9]+)-([0-9]+)/ && $3 >= 27 && $3 <= 31' < file

La regex è per lo più come un grep ERE, le parentesi catturano le parti corrispondenti nelle variabili $1 , $2 , $3 ecc.


Linux
  1. Espressioni regolari:mettere tutto insieme

  2. Contare il numero totale di occorrenze utilizzando Grep?

  3. Bash + Verifica nome tramite espressione regolare?

  4. Espressioni regolari nel comando Grep con 10 esempi - Parte I

  5. Numero casuale tra l'intervallo nella shell

Espressione sequenza Bash (intervallo)

Espressioni regolari in Grep (Regex)

Come Grep per più stringhe e pattern

Estrarre la sottostringa secondo Regexp con Sed o Grep?

La definizione di un'espressione regolare?

10 esempi pratici di regex con grep