12 Linux grep buýrugynyň amaly mysallary


Faýlda belli bir setir ýa-da nagyş gözlemek meselesi bilen ýüzbe-ýüz bolduňyzmy, ýöne nirä gözläp başlajagyňyzy bilmeýärsiňizmi? Onda, halas ediş üçin grep!

grep, Linux-yň her paýlanyşynda enjamlaşdyrylan güýçli faýl nagyş gözlegçisidir. Haýsydyr bir sebäbe görä ulgamyňyza gurulmadyk bolsa, ony paket dolandyryjyňyz arkaly aňsatlyk bilen gurup bilersiňiz (Debian/Ubuntu-da apt-get we RHEL/CentOS/Fedora-da ýum).

$ sudo apt-get install grep         #Debian/Ubuntu
$ sudo yum install grep             #RHEL/CentOS/Fedora

Aýaklaryňyzy grep bilen çyglandyrmagyň iň aňsat usulynyň diňe suwa çümüp, käbir hakyky dünýä mysallaryny ulanmakdygyna göz ýetirdim.

1. Faýllary gözläň we tapyň

Täze Ubuntu-nyň täze nusgasyny enjamyňyza gurnadyňyz we Python skriptini surata düşürersiňiz diýeliň. Gollanma gözläp, webde göz aýlaýarsyňyz, ýöne ulanylýan Python-yň iki dürli wersiýasynyň bardygyny görýärsiňiz we ulgamyňyzda haýsysyny Ubuntu gurnaýjy tarapyndan gurlandygyny ýa-da haýsydyr bir modul gurandygyny bilmeýärsiňiz. Diňe buýrugy işlediň:

# dpkg -l | grep -i python
ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
ii  python-pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library

Ilki bilen ulgamyňyzda gurnalan * .deb paketlerini görkezýän dpkg –l işledik. Ikinjiden, bu çykyşy grep –i pifonyna geçirdik, ýönekeý ýagdaýlar grep we süzüp, içindäki piton bilen hemme zady yzyna gaýtaryp berýär. Grep harplara duýgur bolany üçin, –i opsiýasyny äsgermezlik etmeli. –I opsiýasyny ulanmak, elbetde has anyk gözleg geçirjek bolaýmasaňyz, girmek endigi.

2. Faýllary gözläň we süzüň

Grep aýratyn faýllaryň ýa-da birnäçe faýllaryň içinde gözlemek we süzmek üçin hem ulanylyp bilner. Bu ssenariýany alalyň:

Apache web serweriňizde birneme kynçylyk çekýärsiňiz we torda kömek sorap, ajaýyp forumlaryň birine ýetdiňiz. Size jogap berýän hoşniýetli ruh,/etc/apache2/sites-available/default-ssl faýlyňyzyň mazmunyny goýmagyňyzy haýyş etdi. Teswirleriň hemmesini aýyryp bilseňiz, size kömek edýän ýigit we ony okaýanlaryň hemmesi aňsat bolmazmy? Bolýar! Diňe şuny işlediň:

# grep –v “#”  /etc/apache2/sites-available/default-ssl

–V opsiýasy grep-e çykyşyny tersine öwürmegi aňladýar, ýagny gabat gelýän setirleri çap etmegiň ýerine, tersine hereket ediň we aňlatma gabat gelmeýän setirleriň hemmesini çap ediň, bu ýagdaýda # düşündirişli setirler.

3. Diňe .mp3 faýllary tapyň

Grep stdout-dan süzmek üçin gaty peýdaly bolup biler. Mysal üçin, bir topar dürli formatda aýdym-saz faýllaryndan doly bukjanyňyzyň bardygyny aýdalyň. Suratkeş JeýZ-den * .mp3 faýllaryň hemmesini tapmak isleýärsiňiz, ýöne remiks edilen sazlaryň haýsydyr birini islemeýärsiňiz. Iki sany grep turbasy bilen tapmak buýrugyny ulanmak hile eder:

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

Bu mysalda, ähli faýllary * .mp3 giňeltmesi bilen çap etmek üçin ulanýarys, filtrlemek üçin grep –i turbasyna geçirýäris we ähli faýllary\JayZ ady bilen çap edýäris, soň bolsa grep –vi üçin başga bir turba ulanýarys. süzýär we ähli faýl atlaryny setir bilen (islendik ýagdaýda)\remiks bilen çap etmeýär.

4. Gözleg setirinden öň ýa-da soň setirleriň sanyny görkeziň

Anotherene-de birnäçe wariant, gabat gelýän çyzygy we gözleg setirinden öň ýa-da soň gelýän setirleriň sanyny görkezýän –A we –B wyklýuçatellerdir. Adam sahypasy has jikme-jik düşündiriş berýän bolsa-da, –A=soň, we –B=öň opsiýalary ýatda saklamak aňsat:

# ifconfig | grep –A 4 eth0
# ifconfig | grep  -B 2 UP

5. Duşuşygyň töwereginde çyzyklaryň sany

Grep-iň –C opsiýasy meňzeş, ýöne setirden öň ýa-da soň gelýän setirleri çap etmegiň ýerine setirleri iki tarapa çap edýär:

# ifconfig | grep –C 2 lo

6. Gabat gelýänleriň sanyny sanamak

Grep setirini söz sanamagyna (wc programma) grepiň gurlan opsiýasy hem edil şonuň ýaly ýerine ýetirip biler:

# ifconfig | grep –c inet6

7. Berlen setir boýunça faýllary gözläň

Grep üçin –n opsiýasy, düzülen ýalňyşlyklar wagtynda faýllary düzetmekde gaty peýdalydyr. Berlen gözleg setiriniň faýlynda setir belgisini görkezýär:

# grep –n “main” setup..py

8. Directoryhli direktoriýalarda yzygiderli gözläň

Häzirki bukjada ähli bukjalar bilen birlikde bir setir gözlemek isleseňiz, yzygiderli gözlemek üçin –r opsiýasyny kesgitläp bilersiňiz:

# grep –r “function” *

9. Tutuş nagyş üçin gözlegler

“W” opsiýasyny grep üçin geçirmek, setirdäki ähli nagşy gözleýär. Mysal üçin, ulanmak:

# ifconfig | grep –w “RUNNING”

Nusgany öz içine alýan setiri sitatalarda çap eder. Başga bir tarapdan, synanyşsaňyz:

# ifconfig | grep –w “RUN”

Haýsydyr bir nagyş gözlemän, tutuş bir söz gözlänimizde hiç zat yzyna gaýtarylmaz.

10. Gzipped Faýllarda setir gözläň

Käbir bellemäge mynasyp grep-iň emele gelenleri. Birinjisi, zcat-a meňzeş, gziplenen faýllarda ulanmak üçin zgrep. Grep bilen birmeňzeş wariantlary alýar we şol bir görnüşde ulanylýar:

# zgrep –i error /var/log/syslog.2.gz

11. Faýllarda yzygiderli aňlatma bilen deňeşdiriň

Egrep\Giňeldilen global yzygiderli aňlatma manysyny berýän başga bir emele gelen zat. +? | We() ýaly goşmaça aňlatma meta-nyşanlaryny ykrar edýär.

egrep, zerurlyk ýüze çykan halatynda çeşme faýllaryny we beýleki kod böleklerini gözlemek üçin örän peýdalydyr. –E opsiýasyny görkezip, yzygiderli grep-den ulanyp bolýar.

# grep –E

12. Kesgitlenen nagyş setirini gözläň

Fgrep kesgitli nagyş setiri üçin bir faýl ýa-da faýllaryň sanawyny gözleýär. Grep –F bilen deňdir. Fgrep ulanmagyň umumy usuly oňa nagyşlar faýlyny bermekdir:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

Bu diňe grep bilen başlangyç nokat, ýöne görşüňiz ýaly, dürli maksatlar üçin bahasyna ýetip bolmaýar. Biziň ýerine ýetiren ýönekeý bir setir buýruklarymyzdan başga-da, grep güýçli kron işlerini we ygtybarly gabyk skriptlerini ýazmak üçin ulanylyp bilner.

Döredijilikli boluň, adam sahypasyndaky wariantlary synap görüň we öz maksatlaryňyza hyzmat edýän grep aňlatmalaryny tapyň!