Cara Menemukan Kecocokan Pola Di Beberapa Garis Dengan grep

  • Post author:
  • Post category:Tutorial

grep adalah utilitas penelusuran teks baris perintah yang dapat menemukan pola dan string dalam file dan jenis input lainnya. Sebagian besar kecocokan hanya akan cocok pada satu baris, tetapi sering kali berguna untuk mencocokkan beberapa baris baru.

Mencocokkan Beberapa Baris Baru Dengan grep

Menangani kecocokan multibaris adalah sesuatu yang sulit diperjuangkan oleh grep. Alat yang lebih baik untuk pekerjaan itu adalah awk atau sed, yang keduanya menangani input multi-baris secara alami. Menggunakan dua ekspresi dengan koma di antaranya akan mencocokkan semua yang ada di antara kedua pola tersebut.

awk `/from/,/to/` file sed -n `/from/,/to/p` file

Masih mungkin untuk menangani ini di grep , namun, perintahnya sangat kikuk.

grep -Pz `(?s)from.*n.*to` test

Ini melakukan beberapa hal:

  • -P Mengaktifkan Regex yang Kompatibel dengan Perl.
  • -z memberi makan seluruh file sebagai satu baris, dengan “nol byte” alih-alih baris baru. Ini memungkinkan grep untuk memproses semuanya sebagai satu baris.
  • (?s) mengaktifkan PCRE_DOTALL, yang membuat . karakter cocok dengan karakter apa pun, termasuk baris baru.dari adalah pencocokan awal.
  • *n.* akan mencocokkan semuanya hingga, yang merupakan pencocokan akhir.

Secara keseluruhan, ini akan menyelesaikannya untuk tujuan skrip, tetapi cukup banyak yang harus diingat jika Anda mengetik ini sendiri. Selain itu, menggunakan tanda -o untuk mencetak hanya kecocokan juga akan mencetak karakter nol bit tambahan, yang dapat menyebabkan masalah tambahan.

Menggunakan pcre2grep Sebagai gantinya (Perl-Compatible grep)

Grep biasa bukanlah alat terbaik untuk pekerjaan itu, dan ada alternatif bernama pcre2grep yang mendukung Ekspresi Reguler Kompatibel Perl di luar kotak, dan mampu mencocokkan Regex multibaris dengan sangat mudah.

Ini mungkin diinstal pada sistem Anda, tetapi jika tidak, Anda bisa mendapatkannya dari paket Anda manager:

sudo apt install pcre2-utils

Kemudian, Anda hanya perlu menjalankannya dengan parameter -M.

pcre2grep -M `from(n|.)*to` file

Perhatikan bahwa ini masih mengharuskan Anda untuk mencocokkan “baris baru atau karakter apa pun” secara manual dengan (n|.)* . Atau, Anda dapat menggunakan trik (?s) untuk mengaktifkan PCRE_DOTALL dan juga membuat karakter titik cocok dengan baris baru.

pcre2grep -M file `(?s)from.*to`

Itulah berita seputar Cara Menemukan Kecocokan Pola Di Beberapa Garis Dengan grep, semoga bermanfaat. Disadur dari HowToGeek.com.