grep

Mencari rentetan dalam fail teks menggunakan grep dengan ungkapan biasa

Mencari rentetan dalam fail teks menggunakan grep dengan ungkapan biasa
grep adalah salah satu alat yang paling popular untuk mencari dan mencari rentetan dalam fail teks. Nama 'grep' berasal dari perintah dalam alat penyunting baris Unix ed yang kini sudah usang-perintah ed untuk mencari di peringkat global melalui fail untuk a ekspresi biasa dan kemudian percetakan garis-garis itu adalah g / re / p, di mana semula ungkapan biasa yang akan anda gunakan. Akhirnya, perintah grep ditulis untuk melakukan carian ini pada fail ketika tidak menggunakan ed.

Dalam artikel ini, kami menunjukkan kepada anda untuk menjalankan pencarian rentetan lebih awal menggunakan Grep dengan ungkapan biasa dengan memberi anda 10 contoh langsung mengenai pelaksanaannya. Banyak contoh yang dibincangkan dalam artikel ini mempunyai implikasi praktikal yang bermaksud anda boleh menggunakannya dalam pengaturcaraan Linux harian anda. Sampel berikut menerangkan beberapa contoh regexp untuk corak yang biasa dicari.

Cth 1: Cari Piagam Tunggal dalam Fail Teks

Untuk mengeluarkan baris dalam fail 'buku' yang mengandungi watak '$', ketik:

buku $ grep '\ $'

Cth 2: Cari rentetan tunggal dalam Fail Teks

Untuk mengeluarkan baris dalam fail 'buku' yang mengandungi rentetan '$ 14.99 ', taip:

$ grep '\ $ 14 \.Buku 99 '

Cth 3: Cari Piagam Khas Tunggal dalam Fail Teks

Untuk mengeluarkan baris dalam fail 'buku' yang mengandungi watak '\', ketik:

buku $ grep '\\'

Cth 4: Memadankan Garis Bermula dengan Teks Tertentu

Gunakan 'ˆ' dalam regexp untuk menunjukkan permulaan garis.

Untuk mengeluarkan semua baris dalam '/ usr /ict / words' bermula dengan 'pro', ketik:

$ grep 'ˆpro' / usr /ict / kata

Untuk mengeluarkan semua baris dalam fail 'buku' yang dimulai dengan teks 'di awal', tanpa mengira kes, ketik:

$ grep -i 'ˆdalam permulaan' buku

NOTA: Regexps ini dipetik dengan 'watak; ini kerana beberapa cengkerang memperlakukan watak 'ˆ' sebagai "metacharacter" khas

Selain carian kata dan frasa, anda boleh menggunakan grep untuk mencari corak teks kompleks yang disebut ungkapan biasa. Ungkapan biasa-atau "regexp" -adalah rentetan teks watak khas yang menentukan a set corak untuk dipadankan.

Secara teknikal, corak kata atau frasa adalah ungkapan biasa - hanya sangat sederhana. Dalam ungkapan biasa, kebanyakan watak-termasuk huruf dan angka-mewakili diri mereka sendiri. Contohnya, corak regexp 1 sepadan dengan rentetan '1', dan corak budak lelaki sepadan dengan rentetan 'budak lelaki'.

Terdapat sebilangan watak terpelihara yang disebut metacharacters yang tidak mewakili diri mereka dalam ekspresi biasa, tetapi mereka mempunyai makna khusus yang digunakan untuk membangun pola yang kompleks. Metakarakter ini adalah seperti berikut: ., *, [, ], ˆ, $, dan \. Adalah baik untuk diperhatikan bahawa metakarakter seperti itu adalah biasa di antara hampir semua distribusi Linux biasa dan khas. Berikut adalah artikel yang baik yang merangkumi makna khas metacharacters dan memberikan contoh penggunaannya.

Cth 5: Memadankan Garis Berakhir dengan Teks Tertentu

Gunakan '$' sebagai watak terakhir teks yang dipetik untuk mencocokkan teks itu hanya pada akhir baris. Untuk mengeluarkan baris dalam fail 'pergi' yang diakhiri dengan tanda seru, ketik:

$ grep '!$ 'pergi

Cth 6: Garisan Padan dengan Panjang Tertentu

Untuk memadankan garis dengan panjang tertentu, gunakan bilangan '.'watak antara' ˆ 'dan' $ '- sebagai contoh, untuk mencocokkan semua baris yang mempunyai dua watak (atau lajur) lebar, gunakan' ˆ… $ 'sebagai regexp untuk mencari.

Untuk mengeluarkan semua baris dalam '/ usr /ict / words' dengan lebar tiga aksara, ketik:

$ grep 'ˆ ... $' / usr / dikte / perkataan

Untuk garis yang lebih panjang, lebih berguna menggunakan konstruk yang berbeza: 'ˆ.\ number \ $ ', di mana nombor adalah bilangan baris yang sesuai. Gunakan ',' untuk menentukan julat nombor.

Untuk mengeluarkan semua baris dalam '/ usr /ict / words' dengan lebar dua belas aksara, ketik:

$ grep 'ˆ.\ 12 \ $ '/ usr /ict / kata

Untuk mengeluarkan semua baris dalam '/ usr /ict / words' dengan lebar dua puluh dua atau lebih aksara, ketik:

$ grep 'ˆ.\ 22, \ $ '/ usr /ict / kata

Cth 7: Garis Padan yang Mengandungi Sebilangan Regexps

Untuk mencocokkan garis yang mengandungi sejumlah regexps, tentukan masing-masing regexps yang akan dicari antara operator gantian ('\ |') sebagai regexp untuk dicari. Garis yang mengandungi salah satu dari regexps yang diberikan akan dikeluarkan.

Untuk mengeluarkan semua baris dalam 'playboy' yang mengandungi corak 'buku' atau 'kek', ketik:

$ grep 'buku \ | kek' playboy

Cth 8: Garis Padan yang Mengandungi Semua Regexps

Untuk garis output yang sepadan semua daripada sebilangan regexps, gunakan grep ke garisan output yang mengandungi regexp pertama yang ingin anda padankan, dan masukkan output ke grep dengan regexp kedua sebagai argumen. Terus tambahkan paip ke carian grep untuk semua regexps yang anda ingin cari.

Untuk mengeluarkan semua baris dalam 'senarai main' yang mengandungi kedua-dua corak 'the shore' dan 'sky', tanpa mengira kes, ketik:

$ grep -i 'the shore' senarai main | grep -i langit

Cth 9: Garis Padan yang Hanya Mengandungi Karakter Tertentu

Untuk mencocokkan garis yang hanya mengandungi watak tertentu, gunakan regexp 'ˆ [karakter] * $', di mana aksara adalah yang sesuai.  Untuk mengeluarkan baris dalam '/ usr /ict / words' yang hanya mengandungi vokal, ketik:

$ grep -i 'ˆ [aeiou] * $' / usr /ict / kata

Pilihan '-i' sepadan dengan watak tanpa mengira kes; jadi, dalam contoh ini, semua watak vokal dipadankan tanpa mengira kes.

Cth 10: Mencari Frasa Tanpa Mengira Jarak Jauh

Salah satu cara untuk mencari frasa yang mungkin berlaku dengan ruang tambahan antara kata-kata, atau melintasi garis atau jeda halaman, adalah dengan membuang semua umpan baris dan ruang tambahan dari input, dan kemudian tekan. Untuk melakukan ini, masukkan input ke tr dengan "\ r \ n: \> \ | -" sebagai argumen kepada pilihan '-d' (membuang semua jeda baris dari input); paipkan ke penapis fmt dengan pilihan '-u' (mengeluarkan teks dengan jarak seragam); dan paipkan yang sesuai dengan corak yang hendak dicari.

Untuk mencari rentetan baris untuk rentetan 'pada masa yang sama dengan' dalam fail 'docs', ketik:

$ cat dokumen | tr -d '\ r \ n: \> \ |
-'| fmt -u | grep 'pada masa yang sama dengan'

Ringkasan

Dalam artikel ini, kami mengkaji 10 contoh praktikal menggunakan perintah Grep Linux untuk mencari dan mencari rentetan dalam fail teks. Sepanjang perjalanan, kami belajar bagaimana menggunakan ungkapan biasa bersama dengan Grep untuk melakukan carian kompleks pada fail teks. Sekarang anda mempunyai idea yang lebih baik mengenai seberapa kuat fungsi carian Linux.

Berikut adalah sumber tambahan bagi mereka yang berminat untuk mempelajari lebih lanjut mengenai pengaturcaraan Linux:

Sumber untuk Pentadbir Sistem

Sumber untuk Pengaturcara Kernel Linux

Kamus Sistem Fail Linux

Kajian Komprehensif Bagaimana Sistem Fail dan Direktori Linux Berfungsi

Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...
OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...
Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...