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, anda akan mempelajari beberapa contoh yang akan membantu anda memahami arahan grep.
01 dari 09Cara 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-bukuKeputusan 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.
Carian adalah kes sensitif jadi jika salah satu tajuk mempunyai "yang" bukan "The" maka itu tidak akan dikembalikan.
Untuk mengabaikan perkara ini, anda boleh menambah suis berikut:
grep the books - signore-caseAnda juga boleh menggunakan suis -i seperti berikut:
Continue Reading Below
02 dari 09Cari 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:
aberdeenaberystwythaberlurinverurieinvernessnewburghrusa barugalah baruglasgowedinburghJika anda ingin mencari semua tempat dengan inver dalam nama gunakan sintaks berikut:
grep inver * placesAsterisk (*) 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 placesPerintah 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 mengenai .com yang anda boleh cari dengan menggunakan sintaks berikut:
grep * about * domainnamePerintah 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 domainnameIni akan berfungsi ok kecuali ada domain dengan nama berikut:
aboutycom.comUntuk benar-benar mencari istilah about.com anda perlu melepaskan titik seperti berikut:
grep * mengenai domain .comKad liar akhir untuk menunjukkan kepada anda adalah tanda tanya yang bermaksud sifar atau satu aksara.
Sebagai contoh:
grep? ber placenamesPerintah di atas akan kembali aberdeen, aberystwyth atau bahkan berwick.
Continue Reading Below
03 dari 09Cari 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 teamsPerintah 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 teamsPerintah di atas akan kembali ke Manchester United dan Newcastle United tetapi tidak FC United Of Manchester.
04 dari 09Mengira 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 inputfileSekiranya corak itu dipadankan dua kali maka nombor 2 akan dikembalikan.
Continue Reading Below
05 dari 09Mencari 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 $ placesKeputusan pulangan akan menjadi semua tempat kecuali colwyn bay.
Ini jelas hanya berfungsi untuk tempat-tempat yang berakhir di tanah (hampir tidak saintifik).
Anda boleh membalikkan pemilihan menggunakan sintaks berikut:
grep -v land $ placesIni akan menemui semua tempat yang tidak berakhir dengan tanah.
06 dari 09Cara 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 ^ $ placesMalangnya 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 ^ $ placesWalau bagaimanapun, ia lebih berguna untuk mengetahui nombor baris yang mempunyai garis kosong supaya anda boleh menggantikannya. Anda boleh melakukannya dengan arahan berikut:
grep -n ^ $ placesContinue Reading Below
07 dari 09Cara 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 'A-Z' nama failKurungan 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 'a-z' nama failJika anda ingin memadankan huruf dan bukan angka atau simbol lain, anda boleh menggunakan sintaks yang berikut:
grep 'a-zA-Z' nama failAnda boleh melakukan perkara yang sama dengan nombor seperti berikut:
grep '0-9' nama fail 08 dari 09Mencari 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 -" nomborSeperti 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 } -" nomborSlash 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.
Continue Reading Below
09 dari 09Menggunakan 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 -efSemua proses yang sedang berjalan pada sistem anda akan dipaparkan.
Anda boleh menggunakan grep untuk mencari proses berjalan tertentu seperti berikut:
ps -ef | grep firefoxRingkasan
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.