12 Eżempji Prattiċi tal-Kmand tal-Linux grep


Qatt ġejt ikkonfrontat bil-kompitu li tfittex string jew mudell partikolari f'fajl, iżda m'għandek l-ebda idea minn fejn tibda tfittex? Ukoll allura, hawn huwa grep għas-salvataġġ!

grep huwa searcher tal-mudell tal-fajls b'saħħtu li jiġi mgħammar fuq kull distribuzzjoni tal-Linux. Jekk, għal kwalunkwe raġuni, mhix installata fis-sistema tiegħek, tista 'faċilment tinstallaha permezz tal-maniġer tal-pakkett tiegħek (apt-get fuq Debian/Ubuntu u yum fuq RHEL/CentOS/Fedora).

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

Sibt li l-eħfef mod biex xarrab saqajk bil-grep huwa li tgħaddas sewwa u tuża xi eżempji tad-dinja reali.

1. Fittex u Sib Fajls

Ejja ngħidu li għadek kif installajt kopja ġdida tal-Ubuntu l-ġdida fuq il-magna tiegħek, u li se tagħti ċans lill-iskript ta 'Python. Inti kont qed tgħorok il-web tfittex tutorials, imma tara li hemm żewġ verżjonijiet differenti ta 'Python fl-użu, u ma tafx liema waħda ġiet installata fis-sistema tiegħek mill-installatur ta' Ubuntu, jew jekk installat xi moduli. Sempliċement mexxi dan il-kmand:

# 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

L-ewwel, għamilna dpkg –l, li jelenka pakketti *.deb installati fis-sistema tiegħek. It-tieni, għamilna dak l-output għal grep –i python, li sempliċiment jgħid “mur fuq grep u ffiltra u rritorna kollox b’‘python’ fih.” L-għażla –i qiegħda hemm biex tinjora l-każ, peress li grep huwa sensittiv għall-każi. L-użu tal-għażla –i huwa drawwa tajba li tidħol fiha, sakemm ovvjament ma tkunx qed tipprova ġġib tfittxija aktar speċifika.

2. Fittex u Iffiltra Fajls

Il-grep jista 'jintuża wkoll biex tfittex u tiffiltra fi ħdan fajls individwali jew fajls multipli. Ejja nieħdu dan ix-xenarju:

Qed ikollok xi problemi bl-Apache Web Server tiegħek, u inti lħaqt ma' wieħed mill-ħafna fora tal-biża' fuq ix-xibka titlob għal xi għajnuna. Ir-ruħ tajba li twieġeb lilek talbitek tpoġġi l-kontenut tal-fajl /etc/apache2/sites-available/default-ssl tiegħek. Ma jkunx aktar faċli għalik, il-bniedem li qed jgħinek, u għal kulħadd li jaqrah, kieku tista 'tneħħi l-linji kkummentati kollha? Ukoll tista '! Mexxi dan:

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

L-għażla –v tgħid lil grep biex jaqleb l-output tiegħu, li jfisser li minflok ma tipprintja linji li jaqblu, agħmel l-oppost u tipprintja l-linji kollha li ma jaqblux mal-espressjoni, f'dan il-każ, il-# linji kkummentati.

3. Sib il-fajls .mp3 kollha biss

Il-grep jista 'jkun utli ħafna għall-iffiltrar minn stdout. Per eżempju, ejja ngħidu li għandek folder sħiħ mimli fajls tal-mużika f'mazz ta 'formati differenti. Trid issib il-fajls *.mp3 kollha mill-artist JayZ, imma ma trid l-ebda waħda mill-binarji remixed. L-użu ta' kmand tas-sejba ma' koppja ta' pajpijiet grep se jagħmel il-trick:

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

F'dan l-eżempju, qed nużaw find biex nipprintjaw il-fajls kollha b'estensjoni *.mp3, pajpha għal grep –i biex niffiltraw u tipprintja l-fajls kollha bl-isem \JayZ u mbagħad pajp ieħor għal grep –vi li jiffiltra u ma jistampax l-ismijiet tal-fajls kollha bl-istring (fi kwalunkwe każ) \remix.

4. Uri Numru ta 'Linji Qabel jew Wara String ta' Fittex

Koppja oħra ta 'għażliet huma l-iswiċċijiet –A u –B, li juru l-linja mqabbla u n-numru ta' linji jew li jiġu qabel jew wara s-sekwenza tat-tfittxija. Filwaqt li l-paġna man tagħti spjegazzjoni aktar dettaljata, insibha aktar faċli li tiftakar l-għażliet bħala –A = wara, u –B = qabel:

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

5. Prints Numru ta 'Linji Madwar Taqbila

L-għażla -C tal-grep hija simili, iżda minflok tipprintja l-linji li jiġu qabel jew wara l-istring, tipprintja l-linji f'kull direzzjoni:

# ifconfig | grep –C 2 lo

6. Għadd Numru ta 'Logħbiet

Simili għall-pajpijiet ta’ string grep għal għadd ta’ kliem (programm wc) l-għażla integrata ta’ grep tista’ twettaq l-istess għalik:

# ifconfig | grep –c inet6

7. Fittex Fajls minn String Mogħtija

L-għażla –n għal grep hija utli ħafna meta tiddibaggja l-fajls waqt l-iżbalji tal-kompilazzjoni. Hija turi n-numru tal-linja fil-fajl tas-sekwenza tat-tfittxija mogħtija:

# grep –n “main” setup..py

8. Fittex string Rikursiv fid-Diretorji kollha

Jekk tixtieq tfittex string fid-direttorju kurrenti flimkien mas-subdirettorji kollha, tista' tispeċifika l-għażla –r biex tfittex b'mod rikorsiv:

# grep –r “function” *

9. Tfittxijiet għall-mudell kollu

Tgħaddi l-għażla –w għal tfittxijiet grep għall-mudell kollu li jinsab fis-sekwenza. Per eżempju, billi tuża:

# ifconfig | grep –w “RUNNING”

Se tipprintja l-linja li fiha l-mudell fi kwotazzjonijiet. Min-naħa l-oħra, jekk tipprova:

# ifconfig | grep –w “RUN”

Xejn mhu se jiġi rritornat peress li mhux qed infittxu mudell, iżda kelma sħiħa.

10. Fittex string f'Gzipped Files

Li jistħoqqilhom xi tissemma huma d-derivattivi tal-grep. L-ewwel huwa zgrep, li, simili għal zcat, huwa għall-użu fuq fajls gzipped. Huwa jieħu l-istess għażliet bħal grep u jintuża bl-istess mod:

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

11. Qabbel l-Espressjoni Regolari fil-Fajls

L-egrep huwa derivattiv ieħor li tirrappreżenta \Extended Global Regular Expression. Jirrikonoxxi meta-karattri ta' espressjoni addizzjonali bħal + ? | u().

egrep huwa utli ħafna għat-tiftix ta' fajls tas-sors, u biċċiet oħra ta' kodiċi, jekk ikun hemm bżonn. Jista 'jiġi invokat minn grep regolari billi tispeċifika l-għażla –E.

# grep –E

12. Fittex String Pattern Fiss

L-fgrep ifittex fajl jew lista ta' fajls għal string ta' mudell fiss. Huwa l-istess bħal grep –F. Mod komuni kif tuża fgrep huwa li tgħaddilu fajl ta' mudelli:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

Dan huwa biss punt tat-tluq ma 'grep, iżda kif inti probabilment tista' tara, huwa imprezzabbli għal varjetà ta 'skopijiet. Minbarra l-kmandi sempliċi ta 'linja waħda li implimentajna, grep jista' jintuża biex jiktbu impjiegi cron qawwija, u skripts tal-qoxra robusti, għall-bidu.

Kun kreattiv, esperimenta bl-għażliet fil-paġna man, u oħroġ b'espressjonijiet grep li jaqdu l-iskopijiet tiegħek!