GNU/Linux >> Belajar Linux >  >> Linux

rentang nomor ekstrak grep

Anda menginginkan token ekspresi reguler "pergantian" | untuk mengatakan "ini atau itu":

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

Lihat Mengapa ekspresi reguler saya berfungsi di X tetapi tidak di Y? untuk beberapa latar belakang tentang token ekspresi reguler dan kelas regex (basic, extended, dll).


grep tidak pandai menangani angka, ia tidak tahu bagaimana membandingkannya secara aritmatika. Untuk itu, Anda mungkin ingin menggunakan sesuatu seperti awk atau Perl. Itu tidak terlalu penting di sini, karena mudah untuk mencantumkan 09 saja dan 10 , tetapi jika Anda memiliki rentang dari 97 hingga 123, itu akan jauh lebih buruk.

Misalnya. ini akan memilih tahun, bulan, dan hari sebagai angka, dan mencetak baris dengan tanggal antara 27 dan 31:

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

Regex sebagian besar seperti grep ERE, tanda kurung menangkap bagian yang sesuai ke dalam variabel $1 , $2 , $3 dll.


Linux
  1. Ekspresi reguler:Menarik semuanya bersama-sama

  2. Ekstrak Substring Menurut Regexp Dengan Sed Atau Grep?

  3. Definisi Ekspresi Reguler?

  1. Bash + Verifikasi Nama Dengan Ekspresi Reguler?

  2. Ekspresi Reguler dalam Perintah Grep dengan 10 Contoh – Bagian I

  3. Angka acak antara rentang di shell

  1. Apa artinya \b dalam pola grep?

  2. Ekspresi Reguler untuk menemukan karakter ganda di Bash

  3. Masalah ekspresi reguler di Bash:[^negate] sepertinya tidak berfungsi