GNU/Linux >> Znalost Linux >  >> Linux

číselný rozsah extraktu grep

Chcete token regulárního výrazu "alternace" | říct „buď to nebo tamto“:

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

Viz Proč můj regulární výraz funguje v X, ale ne v Y? pro určité pozadí tokenů regulárních výrazů a tříd regulárních výrazů (základní, rozšířené atd.).


grep neumí zacházet s čísly, neumí je aritmeticky porovnat. K tomu možná budete chtít použít něco jako awk nebo Perl. To zde není příliš důležité, protože je snadné vypsat 09 a 10 , ale pokud byste měli něco jako rozsah od 97 do 123, bylo by to mnohem horší.

Např. to by vybralo rok, měsíc a den jako čísla a vytisklo řádky, kde je den mezi 27 a 31:

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

Regulární výraz je většinou jako grep ERE, závorky zachycují odpovídající části do proměnných $1 , $2 , $3 atd.


Linux
  1. Regulární výrazy v příkazu Grep s 10 příklady – část I

  2. Jak převrátit výraz grep

  3. grep odpovídá pouze řádkům v určeném rozsahu

  1. Co znamená \b ve vzoru grep?

  2. Regulární výraz pro hledání dvojitých znaků v Bash

  3. Regulární výraz se sed

  1. Regulární výrazy:Stahování všeho dohromady

  2. Extrahovat podřetězec podle Regexp s Sed nebo Grep?

  3. Zkontrolujte počet aktivních připojení na portu 80?