GNU/Linux >> Belajar Linux >  >> Linux

Memperkenalkan ekspresi reguler

Kita semua telah menggunakan file globbing dengan karakter wildcard seperti * dan ? sebagai sarana untuk memilih file atau baris data tertentu dari aliran data. Alat-alat ini sangat kuat dan saya menggunakannya berkali-kali dalam sehari. Namun, ada hal-hal yang tidak dapat dilakukan dengan wildcard.

Ekspresi reguler (regex atau RE) memberi kita pola yang lebih kompleks dan fleksibel

kemampuan yang cocok. Sama seperti karakter tertentu yang memiliki arti khusus saat menggunakan file globbing, RE juga memiliki karakter khusus. Ada dua jenis utama ekspresi reguler (RE), Basic Regular Expressions (BREs), dan Extended Regular Expressions (EREs).

Hal pertama yang kita butuhkan adalah beberapa definisi. Ada banyak definisi untuk istilah ekspresi reguler , tetapi banyak yang kering dan tidak informatif. Ini milikku.

Ekspresi Reguler adalah string literal dan metakarakter yang dapat digunakan sebagai pola oleh berbagai utilitas Linux untuk mencocokkan string data teks biasa ASCII dalam aliran data. Saat terjadi kecocokan, ini dapat digunakan untuk mengekstrak atau menghilangkan baris data dari aliran, atau untuk memodifikasi string yang cocok dengan cara tertentu.

Basic Regular Expressions (BREs) dan Extended Regular Expressions (EREs) tidak berbeda secara signifikan dalam hal fungsionalitas. (Lihat Bagian 3.6 halaman info grep, "Ekspresi Reguler Dasar vs. Diperpanjang.") Perbedaan utama adalah dalam sintaks yang digunakan dan bagaimana karakter meta ditentukan. Dalam ekspresi reguler dasar, metakarakter ? , + , { , | , ( , dan ) kehilangan arti khusus mereka. Sebagai gantinya, perlu menggunakan versi garis miring terbalik:\? , \+ , \{ , \| , \( , dan \) . Sintaks ERE diyakini oleh banyak orang lebih mudah digunakan.

Catatan: Ketika saya berbicara tentang ekspresi reguler, dalam pengertian umum saya biasanya bermaksud memasukkan ekspresi reguler dasar dan diperluas. Jika ada perbedaan yang harus dibuat, saya akan menggunakan akronim BRE untuk ekspresi reguler dasar atau ERE untuk ekspresi reguler yang diperluas.

Ekspresi reguler (RE) mengambil konsep penggunaan metakarakter untuk mencocokkan pola dalam aliran data lebih jauh daripada file globbing, dan memberi kami kontrol lebih besar atas item yang kami pilih dari aliran data. RE digunakan oleh berbagai alat untuk mengurai aliran data untuk mencocokkan pola karakter untuk melakukan beberapa transformasi pada data.

Catatan: Salah satu pengertian umum dari parse adalah mengkaji sesuatu dengan mempelajari bagian-bagian komponennya. Untuk tujuan kami, kami mengurai aliran data untuk menemukan urutan karakter yang cocok dengan pola tertentu.

Ekspresi reguler memiliki reputasi sebagai mantra yang tidak jelas dan misterius yang hanya digunakan oleh mereka yang memiliki kekuatan sysadmin sihir khusus. Satu baris kode di bawah ini (yang saya gunakan untuk mengubah file yang dikirimkan kepada saya menjadi bentuk yang dapat digunakan) tampaknya mengkonfirmasi hal ini:

$ cat Experiment_6-1.txt | grep -v Team | grep -v "^\s*$" | sed -e "s/[Ll]eader//" -e "s/\[//g" -e "s/\]//g" -e "s/)//g" | awk '{print $1" "$2" <"$3">"}' > addresses.txt

Pipa perintah ini tampaknya merupakan urutan omong kosong yang tidak berarti bagi siapa pun tanpa sepengetahuan regex. Jelas terlihat seperti itu bagi saya pertama kali saya menemukan sesuatu yang serupa di awal karir saya. Seperti yang akan Anda lihat, regex relatif sederhana setelah dijelaskan.

Kami hanya dapat mulai menyentuh semua kemungkinan yang terbuka bagi kami oleh ekspresi reguler dalam satu artikel (bahkan dalam satu seri). Ada seluruh buku yang dikhususkan secara eksklusif untuk ekspresi reguler, jadi kami akan menjelajahi dasar-dasarnya dalam serangkaian artikel di sini tentang Aktifkan Sysadmin selama minggu mendatang. Pada akhirnya, Anda akan cukup tahu untuk memulai dengan tugas-tugas umum untuk sysadmin. Mudah-mudahan, Anda akan lapar untuk belajar lebih banyak sendiri setelah itu.

Catatan: Artikel ini adalah versi Bab 6 yang sedikit dimodifikasi dari Volume 2 buku Linux saya, Using and Administering Linux:Zero to SysAdmin, yang akan dirilis dari Apress pada akhir 2019.


Linux
  1. Cara Menggunakan Awk dan Ekspresi Reguler untuk Memfilter Teks atau String dalam File

  2. Bagaimana Ekspresi Reguler Berbeda Dari Wildcard yang Digunakan Untuk Memfilter File?

  3. Definisi Ekspresi Reguler?

  1. Bash:Ekspresi Reguler Dalam Substitusi?

  2. Ekspresi Reguler Tingkat Lanjut dalam Perintah Grep dengan 10 Contoh – Bagian II

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

  1. Evaluasi ekspresi dalam Vim

  2. Bagaimana Anda menggunakan ekspresi reguler dengan perintah cp di Linux?

  3. Bagaimana cara mengecualikan file dari arsip TAR menggunakan ekspresi reguler?