grep

Menemukan string dalam file teks menggunakan grep dengan ekspresi reguler

Menemukan string dalam file teks menggunakan grep dengan ekspresi reguler
grep adalah salah satu alat paling populer untuk mencari dan menemukan string dalam file teks. Nama 'grep' berasal dari perintah di alat editor baris Unix ed yang sekarang sudah usang-perintah ed untuk mencari secara global melalui file untuk a ekspresi reguler lalu pencetakan garis-garis itu adalah g/re/p, di mana ekspresi reguler yang akan Anda gunakan. Akhirnya, perintah grep ditulis untuk melakukan pencarian ini pada file saat tidak menggunakan ed.

Dalam artikel ini, kami menunjukkan kepada Anda untuk menjalankan pencarian string lanjutan menggunakan Grep dengan ekspresi reguler dengan memberi Anda 10 contoh langsung tentang implementasinya. Banyak contoh yang dibahas dalam artikel ini memiliki implikasi praktis yang berarti Anda dapat menggunakannya dalam pemrograman Linux harian Anda. Contoh berikut menjelaskan beberapa contoh regexp untuk pola yang sering dicari:.

Contoh 1: Temukan Penyewa Tunggal dalam File Teks

Untuk menampilkan baris dalam file 'book' yang berisi karakter '$', ketik:

$ grep '\$' buku

Contoh 2: Menemukan satu string dalam File Teks

Untuk menampilkan baris dalam file 'book' yang berisi string '$14.99', ketik:

$ grep '\$14\.buku 99'

Contoh 3: Temukan Penyewa Khusus Tunggal dalam File Teks

Untuk menampilkan baris dalam file 'book' yang berisi karakter '\', ketik:

$ grep '\\' buku

Contoh 4: Mencocokkan Garis Dimulai dengan Teks Tertentu

Gunakan 'ˆ' dalam regexp untuk menunjukkan awal baris.

Untuk menampilkan semua baris dalam '/usr/dict/words' yang dimulai dengan 'pro', ketik:

$ grep 'ˆpro' /usr/dict/words

Untuk menampilkan semua baris dalam file 'buku' yang dimulai dengan teks 'di awal', apa pun hurufnya, ketik:

$ grep -i buku 'ˆpada awalnya'

CATATAN: Regexps ini dikutip dengan 'karakter; ini karena beberapa shell memperlakukan karakter 'ˆ' sebagai "metakarakter" khusus

Selain pencarian kata dan frasa, Anda dapat menggunakan grep untuk mencari pola teks kompleks yang disebut ekspresi reguler. Ekspresi reguler-atau "regexp"-adalah string teks karakter khusus yang menentukan a set pola yang cocok.

Secara teknis, pola kata atau frasa adalah ekspresi reguler-hanya yang sangat sederhana. Dalam ekspresi reguler, sebagian besar karakter-termasuk huruf dan angka-mewakili diri mereka sendiri. Misalnya, pola regexp 1 cocok dengan string '1', dan polanya anak laki-laki cocok dengan string 'boy'.

Ada sejumlah karakter khusus yang disebut metakarakter yang tidak mewakili diri mereka sendiri dalam ekspresi reguler, tetapi mereka memiliki arti khusus yang digunakan untuk membangun pola yang kompleks. Metakarakter tersebut adalah sebagai berikut: ., *, [, ], , $, dan \. Baik untuk dicatat bahwa metakarakter seperti itu umum di antara hampir semua distribusi Linux umum dan khusus. Berikut adalah artikel bagus yang mencakup arti khusus dari karakter meta dan memberikan contoh penggunaannya.

Contoh 5: Mencocokkan Garis yang Berakhir dengan Teks Tertentu

Gunakan '$' sebagai karakter terakhir dari teks kutipan untuk mencocokkan teks itu hanya di akhir baris. Untuk menampilkan baris dalam file 'going' yang diakhiri dengan tanda seru, ketik:

$ grep '!$' pergi

Contoh 6: Mencocokkan Garis dengan Panjang Tertentu

Untuk mencocokkan garis dengan panjang tertentu, gunakan jumlah '.' karakter antara 'ˆ' dan '$'-misalnya, untuk mencocokkan semua baris yang lebarnya dua karakter (atau kolom), gunakan 'ˆ… $' sebagai regexp untuk mencari.

Untuk menampilkan semua baris dalam '/usr/dict/words' yang lebarnya tepat tiga karakter, ketik:

$ grep 'ˆ… $' /usr/dict/words

Untuk garis yang lebih panjang, akan lebih berguna untuk menggunakan konstruksi yang berbeda: 'ˆ.\number\$', di mana number adalah jumlah baris yang akan dicocokkan. Gunakan ',' untuk menentukan rentang angka.

Untuk menampilkan semua baris dalam '/usr/dict/words' yang lebarnya tepat dua belas karakter, ketik:

$ grep 'ˆ.\12\$' /usr/dict/words

Untuk menampilkan semua baris dalam '/usr/dict/words' yang lebarnya dua puluh dua karakter atau lebih, ketik:

$ grep 'ˆ.\22,\$' /usr/dict/words

Contoh 7: Garis Pencocokan Yang Mengandung Beberapa Regexps

Untuk mencocokkan baris yang berisi salah satu dari sejumlah regexp, tentukan masing-masing regexp yang akan dicari di antara operator alternatif ('\|') sebagai regexp yang akan dicari. Baris yang berisi salah satu regexp yang diberikan akan ditampilkan.

Untuk menampilkan semua baris dalam 'playboy' yang berisi pola 'buku' atau 'kue', ketik:

$ grep 'buku\|kue' playboy

Contoh 8: Mencocokkan Baris Yang Mengandung Semua Beberapa Regexps

Untuk menampilkan jalur yang cocok semua dari sejumlah regexp, gunakan grep untuk mengeluarkan baris yang berisi regexp pertama yang ingin Anda cocokkan, dan menyalurkan output ke grep dengan regexp kedua sebagai argumen. Lanjutkan menambahkan pipa ke pencarian grep untuk semua regexp yang ingin Anda cari.

Untuk menampilkan semua baris dalam 'daftar putar' yang berisi pola 'pantai' dan 'langit', apa pun kasusnya, ketik:

$ grep -i daftar putar 'pantai' | grep -i sky

Contoh 9: Mencocokkan Garis Yang Hanya Mengandung Karakter Tertentu

Untuk mencocokkan baris yang hanya berisi karakter tertentu, gunakan regexp 'ˆ[characters]*$', dengan karakter yang cocok.  Untuk menampilkan baris dalam '/usr/dict/words' yang hanya berisi vokal, ketik:

$ grep -i 'ˆ[aeiou]*$' /usr/dict/words

Opsi '-i' cocok dengan karakter terlepas dari huruf besar/kecil; jadi, dalam contoh ini, semua karakter vokal dicocokkan terlepas dari kasusnya.

Contoh 10: Menemukan Frasa Terlepas dari Spasi

Salah satu cara untuk mencari frasa yang mungkin muncul dengan spasi ekstra di antara kata-kata, atau melintasi baris atau hentian halaman, adalah dengan menghapus semua umpan baris dan spasi ekstra dari input, lalu ambil itu. Untuk melakukan ini, pipa input ke tr dengan"\r\n:\>\|-"sebagai argumen ke opsi '-d' (menghapus semua jeda baris dari input); pipa itu ke filter fmt dengan opsi '-u' (mengeluarkan teks dengan spasi seragam); dan pipa itu untuk memahami pola yang akan dicari.

Untuk mencari lintas baris untuk string 'bersamaan dengan' dalam file 'docs', ketik:

$ dokumen kucing | tr -d '\r\n:\>\|
-' | fmt -u | grep 'bersamaan dengan'

Ringkasan

Pada artikel ini, kami meninjau 10 contoh praktis menggunakan perintah Grep Linux untuk mencari dan menemukan string dalam file teks. Sepanjang jalan, kami belajar bagaimana menggunakan ekspresi reguler dalam hubungannya dengan Grep untuk melakukan pencarian kompleks pada file teks. Sekarang Anda memiliki gagasan yang lebih baik tentang seberapa kuat fungsi pencarian Linux.

Berikut adalah sumber daya tambahan bagi mereka yang tertarik untuk mempelajari lebih lanjut tentang pemrograman Linux:

Sumber Daya untuk Administrator Sistem

Sumber Daya untuk Pemrogram Kernel Linux

Kamus Sistem File Linux Linux

Tinjauan Komprehensif tentang Cara Kerja Sistem File dan Direktori Linux

Alat Berguna untuk Gamer Linux
Jika Anda suka bermain game di Linux, kemungkinan besar Anda telah menggunakan aplikasi dan utilitas seperti Wine, Lutris, dan OBS Studio untuk mening...
Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...
Cara Menggunakan AutoKey untuk Mengotomatiskan Game Linux
AutoKey adalah utilitas otomatisasi desktop untuk Linux dan X11, diprogram dengan Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsionalitas MA...