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
Bayangkan anda mempunyai fail teks yang disebut buku dengan tajuk buku kanak-kanak berikut:
- Robin Hood
- Little Red Riding Hood
- Peter Pan
- Goldilocks dan tiga beruang
- Salju putih dan tujuh orang kerdil
- Pinnochio
- The Cat In The Hat
- The Three Little Pigs
- The Gruffalo
- Charlie dan kilang coklat
Untuk mencari semua buku dengan perkataan "The" dalam tajuk anda akan menggunakan sintaks berikut:
grep Buku-buku
Keputusan berikut akan dikembalikan:
- Goldilocks dan tiga beruang
- Salju putih dan tujuh orang kerdil
- The Cat In The Hat
- The Three Little Pigs
- The Gruffalo
- Charlie dan kilang coklat
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
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
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:
- dailylinuxuser.com/about.html
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:
- Blackpool
- Liverpool
- Manchester City
- Bandar Leicester
- Manchester United
- Newcastle United
- FC United Of Manchester
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:
- aberdeen scotland
- glasgow scotland
- liverpool england
- colwyn bay
- London, England
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:
- aberdeen scotland
- inverness scotland
- liverpool england
- colwyn bay wales
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:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
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