GNU/Linux >> LINUX-Kenntnisse >  >> Linux

grep Extraktnummernbereich

Sie möchten das "alternative" Token für reguläre Ausdrücke | um "entweder dies oder das" zu sagen:

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

Siehe Warum funktioniert mein regulärer Ausdruck in X, aber nicht in Y? für einige Hintergrundinformationen zu Token für reguläre Ausdrücke und Regex-Klassen (einfach, erweitert usw.).


grep kann nicht gut mit Zahlen umgehen, es kann sie nicht arithmetisch vergleichen. Dafür können Sie etwas wie awk oder Perl verwenden. Das ist hier nicht sehr wichtig, da es einfach ist, einfach 09 aufzulisten und 10 , aber wenn Sie so etwas wie einen Bereich von 97 bis 123 hätten, wäre es viel schlimmer.

Z.B. Dies würde Jahr, Monat und Tag als Zahlen auswählen und die Zeilen ausgeben, in denen der Tag zwischen 27 und 31 liegt:

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

Die Regex ist meistens wie ein grep ERE, die Klammern erfassen die entsprechenden Teile in den Variablen $1 , $2 , $3 usw.


Linux
  1. Zufallszahl zwischen Bereich in Shell

  2. Grep:Anzahl der Übereinstimmungen pro Zeile zählen

  3. Was bedeutet \b in einem Grep-Muster?

  4. Regulärer Ausdruck zum Auffinden doppelter Zeichen in Bash

  5. Probleme mit regulären Ausdrücken in Bash:[^negate] scheint nicht zu funktionieren

Bash-Sequenzausdruck (Bereich)

Reguläre Ausdrücke in Grep (Regex)

Wie man nach mehreren Zeichenfolgen und Mustern grep

10 praktische Beispiele für Regex mit grep

So invertieren Sie einen grep-Ausdruck

grep findet nur Zeilen in einem bestimmten Bereich