Contoh Kegunaan Perintah grep Linux

Pengenalan

Perintah grep Linux digunakan sebagai kaedah penapisan input.

GREP bermaksud Pencetak Express Express Regular dan oleh itu untuk menggunakannya secara berkesan, anda harus mempunyai pengetahuan tentang ungkapan biasa.

Dalam artikel ini, saya akan menunjukkan beberapa contoh yang akan membantu anda memahami arahan grep.

01 dari 09

Cara Cari Untuk String Dalam Fail Menggunakan GREP

Perintah grep Linux.

Bayangkan anda mempunyai fail teks yang disebut buku dengan tajuk buku kanak-kanak berikut:

Untuk mencari semua buku dengan perkataan "The" dalam tajuk anda akan menggunakan sintaks berikut:

grep Buku-buku

Keputusan berikut akan dikembalikan:

Dalam setiap kes, perkataan "The" akan diserlahkan.

Perhatikan bahawa carian adalah sensitif kes jadi jika salah satu tajuk mempunyai "yang" dan bukannya "The" maka ia tidak akan dikembalikan.

Untuk mengabaikan perkara ini, anda boleh menambah suis berikut:

grep the books - signore-case

Anda juga boleh menggunakan suis -i seperti berikut:

grep -i buku-buku

02 dari 09

Cari Untuk String Dalam Fail Menggunakan Wildcards

Perintah grep sangat berkuasa. Anda boleh menggunakan pelbagai teknik padanan corak untuk menapis hasil.

Dalam contoh ini, saya akan menunjukkan kepada anda bagaimana untuk mencari tali dalam fail menggunakan wildcard .

Bayangkan anda mempunyai fail yang dipanggil tempat dengan nama tempat Scotland yang berikut:

aberdeen

aberystwyth

aberlur

inverurie

inverness

newburgh

rusa baru

galah baru

glasgow

edinburgh

Jika anda ingin mencari semua tempat dengan inver dalam nama gunakan sintaks berikut:

grep inver * places

Asterisk (*) wildcard bermaksud 0 atau banyak. Oleh itu, jika anda mempunyai tempat yang disebut inver atau tempat yang disebut inverness maka kedua-duanya akan dikembalikan.

Satu lagi kad liar yang boleh anda gunakan ialah tempoh (.). Anda boleh menggunakannya untuk memadankan satu huruf.

grep inver.r places

Perintah di atas akan mencari tempat yang disebut inverurie dan inverary tetapi tidak akan mendapati invereerie kerana hanya ada satu wildcard antara kedua r seperti yang dilambangkan oleh tempoh tunggal.

Kad wildcard tempoh berguna tetapi ia boleh menyebabkan masalah jika anda mempunyai satu sebagai sebahagian daripada teks yang anda cari.

Sebagai contoh lihat senarai nama domain ini

Untuk mencari semua tentang about.com anda boleh cari dengan menggunakan sintaks berikut:

grep * about * domainname

Perintah di atas akan jatuh jika senarai mengandungi nama berikut di dalamnya:

Oleh itu, anda boleh cuba sintaks berikut:

grep * about.com domainname

Ini akan berfungsi ok kecuali ada domain dengan nama berikut:

aboutycom.com

Untuk benar-benar mencari istilah about.com anda perlu melepaskan titik seperti berikut:

grep * mengenai domain .com

Kad liar akhir untuk menunjukkan kepada anda adalah tanda tanya yang bermaksud sifar atau satu aksara.

Sebagai contoh:

grep? ber placenames

Perintah di atas akan kembali aberdeen, aberystwyth atau bahkan berwick.

03 dari 09

Cari Strings Pada Permulaan Dan Penghujung Jalur Menggunakan grep

Karat (^) dan simbol dolar ($) membolehkan anda mencari corak pada permulaan dan akhir baris.

Bayangkan anda mempunyai fail yang dipanggil bola sepak dengan nama pasukan berikut:

Jika anda ingin mencari semua pasukan yang bermula dengan Manchester anda akan menggunakan sintaks berikut:

grep ^ Manchester teams

Perintah di atas akan memulangkan Manchester City dan Manchester United tetapi tidak FC United Of Manchester.

Sebagai alternatif anda boleh mencari semua pasukan yang berakhir dengan United menggunakan sintaks berikut:

grep United teams

Perintah di atas akan memulangkan Manchester United dan Newcastle United tetapi tidak FC United Of Manchester.

04 dari 09

Mengira Bilangan Perlawanan Menggunakan grep

Jika anda tidak mahu mengembalikan garis sebenar yang sepadan dengan corak menggunakan grep tetapi anda hanya ingin tahu berapa banyak anda boleh menggunakan sintaks berikut:

grep -c pattern inputfile

Sekiranya corak itu dipadankan dua kali maka nombor 2 akan dikembalikan.

05 dari 09

Mencari Semua Terma yang Tidak Padan menggunakan grep

Bayangkan anda mempunyai senarai nama tempat dengan negara-negara yang disenaraikan seperti berikut:

Anda mungkin perasan bahawa colwyn bay tidak mempunyai negara yang berkaitan dengannya.

Untuk mencari semua tempat dengan negara anda boleh menggunakan sintaks berikut:

grep land $ places

Keputusan pulangan akan menjadi semua tempat kecuali colwyn bay.

Ini jelas hanya berfungsi untuk tempat-tempat yang berakhir di tanah (hampir tidak saintifik).

Anda boleh membalik pilih dengan menggunakan sintaks yang berikut:

grep -v land $ places

Ini akan menemui semua tempat yang tidak berakhir dengan tanah.

06 dari 09

Cara Cari Talian Kosong Dalam Fail Menggunakan grep

Bayangkan anda mempunyai file masukan yang digunakan oleh aplikasi pihak ketiga yang berhenti membaca fail apabila ia mencari garisan kosong seperti berikut:

Apabila aplikasi mendapat garis selepas liverpool ia akan berhenti membaca maksud colwyn bay yang terlepas sepenuhnya.

Anda boleh menggunakan grep untuk mencari baris kosong dengan sintaks berikut:

grep ^ $ places

Malangnya ini tidak berguna kerana ia hanya mengembalikan garis kosong.

Anda tentu boleh mendapatkan kiraan bilangan garisan kosong sebagai periksa untuk melihat apakah fail itu sah seperti berikut:

grep -c ^ $ places

Walau bagaimanapun, ia lebih berguna untuk mengetahui nombor baris yang mempunyai garis kosong supaya anda boleh menggantikannya. Anda boleh melakukannya dengan arahan berikut:

grep -n ^ $ places

07 dari 09

Cara Cari Untuk Strings Huruf Aksara Besar Atau huruf kecil Menggunakan grep

Menggunakan grep anda boleh menentukan garisan mana dalam fail mempunyai huruf besar menggunakan sintaks berikut:

grep '[AZ]' nama fail

Kurungan persegi [] membolehkan anda menentukan julat aksara. Dalam contoh di atas, ia sepadan dengan mana-mana watak yang antara A dan Z.

Oleh itu untuk memadankan huruf kecil anda boleh menggunakan sintaks berikut:

grep '[az]' nama fail

Jika anda ingin memadankan huruf dan bukan angka atau simbol lain, anda boleh menggunakan sintaks yang berikut:

grep '[a-zA-Z]' nama fail

Anda boleh melakukan perkara yang sama dengan nombor seperti berikut:

grep '[0-9]' nama fail

08 dari 09

Mencari Corak Mengulangi Menggunakan grep

Anda boleh menggunakan kurungan keriting {} untuk mencari pola yang berulang.

Bayangkan anda mempunyai fail dengan nombor telefon seperti berikut:

Anda tahu bahagian pertama nombor itu perlu menjadi tiga digit dan anda ingin mencari garis yang tidak sepadan dengan corak ini.

Daripada contoh sebelumnya, anda tahu bahawa [0-9] mengembalikan semua nombor dalam fail.

Dalam contoh ini kita mahu garis yang bermula dengan tiga angka diikuti dengan tanda hubung (-). Anda boleh melakukannya dengan sintaks berikut:

grep "^ [0-9] [0-9] [0-9] -" nombor

Seperti yang kita ketahui dari contoh-contoh terdahulu karat (^) bermaksud bahawa garisan mesti bermula dengan pola berikut.

[0-9] akan mencari nombor mana-mana antara 0 dan 9. Seperti ini dimasukkan tiga kali ia sepadan dengan 3 nombor. Akhirnya terdapat tanda hubung untuk menunjukkan bahawa tanda hubung mestilah berjaya tiga angka.

Dengan menggunakan kurungan lengkung anda boleh membuat carian lebih kecil seperti berikut:

grep "^ [0-9] \ {3 \} -" nombor

Slash ini melarikan diri dari {kurungan supaya ia berfungsi sebagai sebahagian daripada ungkapan biasa tetapi pada dasarnya apa yang dikatakan ini adalah [0-9] {3} yang bermaksud mana-mana bilangan antara 0 dan 9 tiga kali.

Kurungan kurungan juga boleh digunakan seperti berikut:

{5,10}

{5,}

{510} bermaksud watak yang dicari mesti diulangi sekurang-kurangnya 5 kali tetapi tidak lebih daripada 10 sedangkan {5,} bermaksud watak itu mesti diulang sekurang-kurangnya 5 kali tetapi boleh lebih daripada itu.

09 dari 09

Menggunakan Output Daripada Perintah Lain Menggunakan grep

Sejauh ini kita telah melihat padanan corak dalam fail individu tetapi grep boleh menggunakan output dari arahan lain sebagai input untuk padanan corak.

Contoh yang hebat ini ialah menggunakan arahan ps yang menyenaraikan proses aktif.

Sebagai contoh jalankan arahan berikut:

ps -ef

Semua proses yang sedang berjalan pada sistem anda akan dipaparkan.

Anda boleh menggunakan grep untuk mencari proses berjalan tertentu seperti berikut:

ps -ef | grep firefox

Ringkasan

Perintah grep adalah arahan Linux asas dan ia adalah satu yang bernilai belajar kerana ia akan menjadikan hidup anda lebih mudah apabila mencari fail dan proses ketika menggunakan terminal.