GNU/Linux >> Tutoriels Linux >  >> Linux

grep extraire la plage de numéros

Vous voulez le jeton d'expression régulière "alternation" | pour dire "soit ceci, soit cela":

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

Voir Pourquoi mon expression régulière fonctionne-t-elle dans X mais pas dans Y ? pour des informations sur les jetons d'expressions régulières et les classes de regex (de base, étendues, etc.).


grep n'est pas doué pour manipuler les nombres, il ne sait pas comment les comparer arithmétiquement. Pour cela, vous pouvez utiliser quelque chose comme awk ou Perl. Ce n'est pas très important ici, car il est facile d'énumérer 09 et 10 , mais si vous aviez quelque chose comme une plage de 97 à 123, ce serait bien pire.

Par exemple. cela choisirait l'année, le mois et le jour comme nombres, et imprimerait les lignes où le jour est compris entre 27 et 31 :

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

Le regex est principalement comme un grep ERE, les parenthèses capturent les parties correspondantes dans les variables $1 , $2 , $3 etc.


Linux
  1. Compter le nombre total d'occurrences à l'aide de Grep ?

  2. Extraire la sous-chaîne selon Regexp avec Sed ou Grep ?

  3. La définition d'une expression régulière ?

  4. Bash + Vérifier le nom par expression régulière ?

  5. Expressions régulières dans la commande Grep avec 10 exemples - Partie I

Expression de séquence bash (plage)

Expressions régulières dans Grep (Regex)

Comment Grep pour plusieurs chaînes et modèles

Expressions régulières :tout rassembler

10 exemples pratiques de regex avec grep

grep ne correspond qu'aux lignes d'une plage spécifiée