12 Praktikal nga mga Ehemplo sa Linux grep Command


Nakaatubang ka na ba sa buluhaton sa pagpangita alang sa usa ka partikular nga hilo o sumbanan sa usa ka file, apan wala ka nahibal-an kung asa magsugod pagpangita? Nan, ania ang grep sa pagluwas!

Ang grep usa ka kusgan nga tigpangita sa pattern sa file nga nasangkapan sa matag pag-apod-apod sa Linux. Kung, sa bisan unsang hinungdan, wala kini ma-install sa imong sistema, dali nimo kini ma-install pinaagi sa imong manager sa package (apt-get sa Debian/Ubuntu ug yum sa RHEL/CentOS/Fedora).

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

Akong nahibal-an nga ang labing kadali nga paagi aron mabasa ang imong mga tiil sa grep mao ang pag-dive sa tuo ug paggamit sa pipila nga mga pananglitan sa tinuud nga kalibutan.

1. Pangitaa ug Pangitaa ang mga File

Ingnon ta nga bag-o lang nimo na-install ang bag-ong kopya sa bag-ong Ubuntu sa imong makina, ug hatagan nimo ang script sa Python. Gisuhid nimo ang web nga nangita og mga tutorial, apan nakita nimo nga adunay duha ka lain-laing mga bersyon sa Python nga gigamit, ug wala ka mahibal-an kung hain ang gi-install sa imong sistema sa Ubuntu installer, o kung kini nag-install sa bisan unsang mga module. Pagdagan lang kini nga mando:

# 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

Una, gipadagan namo ang dpkg –l, nga naglista sa na-install nga *.deb nga mga pakete sa imong sistema. Ikaduha, among gipa-pipe kana nga output ngadto sa grep -i python, nga yano nga nag-ingon nga \adto sa grep ug i-filter ug ibalik ang tanan nga adunay 'python' niini. Ang –i nga kapilian naa aron dili ibaliwala ang-case, tungod kay ang grep sensitibo sa kaso. Ang paggamit sa –i nga kapilian usa ka maayong batasan sa pagsulod, gawas kung siyempre naningkamot ka sa paglansang sa usa ka mas espesipikong pagpangita.

2. Pagpangita ug Pagsala sa mga File

Ang grep mahimo usab nga gamiton sa pagpangita ug pagsala sulod sa indibidwal nga mga file o daghang mga file. Atong kuhaon kini nga senaryo:

Nagkaproblema ka sa imong Apache Web Server, ug nakaabot ka sa usa sa daghang katingad-an nga mga forum sa net nga nangayo og tabang. Ang buotan nga kalag nga motubag kanimo mihangyo kanimo sa pag-post sa mga sulod sa imong /etc/apache2/sites-available/default-ssl file. Dili ba kini mas sayon alang kanimo, ang tawo nga nagtabang kanimo, ug ang tanan nga nagbasa niini, kung mahimo nimong tangtangon ang tanan nga mga komento nga linya? Aw mahimo nimo! Pagdagan lang kini:

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

Ang -v nga kapilian nagsulti sa grep nga balit-aron ang output niini, nga nagpasabot nga imbis nga mag-imprinta sa mga linya nga magkaparehas, buhata ang kaatbang ug i-print ang tanan nga mga linya nga dili motakdo sa ekspresyon, sa kini nga kaso, ang # nagkomento nga mga linya.

3. Pangitaa ang tanang .mp3 Files Lamang

Ang grep mahimong mapuslanon kaayo alang sa pagsala gikan sa stdout. Pananglitan, ingnon ta nga ikaw adunay usa ka tibuuk nga folder nga puno sa mga file sa musika sa usa ka hugpong sa lainlaing mga format. Gusto nimo pangitaon ang tanang *.mp3 file gikan sa artist nga si JayZ, pero dili nimo gusto ang bisan unsang remixed tracks. Ang paggamit sa usa ka command sa pagpangita sa usa ka magtiayon nga mga grep pipe makahimo sa limbong:

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

Sa kini nga pananglitan, gigamit namon ang pagpangita aron i-print ang tanan nga mga file nga adunay *.mp3 nga extension, pag-pipe niini sa grep –i aron ma-filter ug ma-print ang tanan nga mga file nga adunay ngalan nga \JayZ ug dayon ang lain nga tubo sa grep -vi nga nagsala ug wala mag-imprenta sa tanang filename gamit ang string (sa bisan unsang kaso) \remix.

4. Ipakita ang Gidaghanon sa mga Linya Sa wala pa o Human sa Search String

Ang laing pares nga mga kapilian mao ang -A ug -B switch, nga nagpakita sa gipares nga linya ug gidaghanon sa mga linya nga moabut sa wala pa o pagkahuman sa search string. Samtang ang panid sa tawo naghatag usa ka mas detalyado nga pagpatin-aw, akong nakita nga labing kadali nga hinumdoman ang mga kapilian ingon -A = pagkahuman, ug -B = kaniadto:

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

5. Gi-imprinta ang Gidaghanon sa mga Linya Palibot sa Tugma

Ang grep's -C nga kapilian parehas, apan imbes nga i-print ang mga linya nga moabut sa wala pa o pagkahuman sa pisi, kini nag-imprinta sa mga linya sa bisan asa nga direksyon:

# ifconfig | grep –C 2 lo

6. Pag-ihap sa Gidaghanon sa Matches

Susama sa pag-pipe sa usa ka grep string sa pag-ihap sa pulong (wc program) ang built-in nga kapilian sa grep mahimo usab nga mahimo alang kanimo:

# ifconfig | grep –c inet6

7. Pangitaa ang mga File pinaagi sa Given String

Ang -n nga kapilian alang sa grep mapuslanon kaayo kung mag-debug sa mga file sa panahon sa pag-compile sa mga sayup. Gipakita niini ang numero sa linya sa file sa gihatag nga string sa pagpangita:

# grep –n “main” setup..py

8. Pangitaa ang usa ka string Recursively sa tanan nga Direktoryo

Kung gusto nimo pangitaon ang usa ka hilo sa karon nga direktoryo kauban ang tanan nga mga subdirektoryo, mahimo nimong ipiho ang -r nga kapilian sa pagpangita nga balik-balik:

# grep –r “function” *

9. Pangitaa ang tibuok sumbanan

Pagpasa sa -w nga kapilian sa grep pagpangita alang sa tibuok nga sumbanan nga anaa sa hilo. Pananglitan, gamit ang:

# ifconfig | grep –w “RUNNING”

I-print ang linya nga adunay sulud sa mga kinutlo. Sa laing bahin, kung imong sulayan:

# ifconfig | grep –w “RUN”

Wala'y ibalik tungod kay wala kami nangita alang sa usa ka sumbanan, apan usa ka tibuuk nga pulong.

10. Pangitag string sa Gzipped Files

Angayan nga hisgutan ang mga gigikanan sa grep. Ang una mao ang zgrep, nga, susama sa zcat, kay gamiton sa mga gzipped files. Nagkinahanglan kini og parehas nga mga kapilian sama sa grep ug gigamit sa parehas nga paagi:

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

11. Ipares ang Regular nga Pagpahayag sa mga File

Ang egrep maoy laing derivative nga nagpasabot sa \Extended Global Regular Expression. Kini nag-ila sa dugang nga ekspresyon nga meta-character sama sa + ? | ug().

Ang egrep mapuslanon kaayo alang sa pagpangita sa mga gigikanan nga mga file, ug uban pang mga piraso sa code, kung kinahanglan. Mahimo kini nga tawagan gikan sa regular nga grep pinaagi sa pagtino sa -E nga kapilian.

# grep –E

12. Pangitaa ang Fixed Pattern String

Ang fgrep nangita sa usa ka file o listahan sa mga file alang sa usa ka fixed pattern string. Parehas kini sa grep –F. Usa ka komon nga paagi sa paggamit sa fgrep mao ang pagpasa sa usa ka file sa mga sumbanan niini:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

Kini usa lamang ka punto sa pagsugod sa grep, apan ingon nga mahimo nimong makita, kini hinungdanon alang sa lainlaing mga katuyoan. Gawas sa yano nga usa ka linya nga mga mando nga among gipatuman, ang grep mahimong magamit sa pagsulat sa kusgan nga mga trabaho sa cron, ug lig-on nga mga script sa shell, alang sa pagsugod.

Pagmamugnaon, pag-eksperimento sa mga kapilian sa panid sa tawo, ug paghimo og mga ekspresyon sa grep nga nagsilbi sa imong kaugalingon nga katuyoan!