Pag-unawa sa grep command na may mga praktikal na halimbawa upang madaling i-filter at ipakita ang nilalaman ng file
GREP
ay nangangahulugang 'Global Regular Expression Print'. Ito ay isang kapaki-pakinabang na command-line utility na ibinigay ng Linux, upang maghanap para sa linya ng teksto na tumutugma sa pattern na ibinigay ng user.
grep
kumukuha ng input mula sa user sa anyo ng mga string o salita na gustong hanapin ng user sa isang partikular na file. Sinusuri ng command ang file na tinukoy ng user para sa pattern na ito at pagkatapos ay ibabalik ang mga linyang tumutugma sa pattern na ibinigay.
Nagagawa nito ang isang mahusay na trabaho sa pamamagitan ng pag-filter ng nilalaman ng isang file kaya ginagawang mas madali ang aming gawain na maghanap ng partikular na nilalaman sa isa o maramihang mga file nang sabay-sabay.
Sa artikulong ito, suriin natin ang paggana ng grep
utos na may detalyadong ilang praktikal na halimbawa.
Available ang mga opsyon sa grep
utos
Ito ang ilan sa mga pangunahing opsyon na madalas mong gagamitin sa grep
utos.
Pagpipilian | Paglalarawan |
-i | Para sa isang case-insensitive na paghahanap |
-r | Upang muling maghanap para sa lahat ng mga file sa tinukoy na direktoryo at mga subdirectory nito |
-c | Upang ipakita ang kabuuang bilang ng beses na lumitaw ang isang string |
-v | Upang ipakita ang mga hindi tugmang linya |
-w | I-filter ang partikular na salitang iyon na ginamit nang hiwalay |
Gamit ang grep
utos
grep
Karaniwang ginagamit ang utos kasama ng tubo (|
) kagamitan. Maaari itong ipatupad gamit ang shell pipe kapag gusto mong gamitin ito sa ilang iba pang mga utos ng Linux. Bagaman, grep
maaari ding gamitin nang isa-isa nang walang tubo (|
) kagamitan.
Tingnan natin ang ilan sa mga pangunahing syntax ng grep
utos na may at walang pipe utility.
Hayaan mo muna akong ipakita sa iyo ang sample na text file na gagamitin ko para ilarawan ang grep
utos.
ANG INDIA AY ISANG MAGANDANG BANSA NG MGA TAONG MAHAL SA KAPAYAPAAN. ang India ay nakatayo sa tatlong haligi ng lehislatura, ehekutibo at hudikatura. Ang India ay Isang Magandang Bansa ng Mga Tao na Mapagmahal sa Kapayapaan. Ang India ay nagmamalasakit sa mga tao dahil ito ay mapagkukunan ng cartesian na nag-uugnay sa kahalagahan ng lahat ng ika-ka-cartesian na mga coordinate. Ang sumusunod ay dalawang walang laman na linya. Ang paggamit ng kariton ng toro ay karaniwang tanawin sa nayon para sa mga gawaing pang-agraryo. Ito ang dulo ng sample file.
grep
ginamit sa pipe ( | )kagamitan
grep
Ang command ay maaaring ipatupad kasama ng iba pang Linux command gamit ang shell pipes. Tulad ng, gamit ang pusa
command na ipakita ang nilalaman ng file ngunit sa parehong oras piping ang output gamit ang grep
utos na ipakita lamang ang nilalaman na nais mong makita. Ito ay magiging mas malinaw kapag dumaan tayo sa halimbawa.
Syntax:
[utos] | grep [string]
Halimbawa:
sample ng pusa.txt | grep lehislatura
Dito, ginamit ko ang pusa
command na magpakita ng ilang linya mula sa 'sample.txt' file. Tanging ang mga linyang iyon ang ipapakita na naglalaman ng salitang 'lehislatura' dito at huwag pansinin ang iba pang mga linya.
Output:
gaurav@ubuntu:~/workspace$ cat sample.txt | Ang grep legislature india ay nakatayo sa tatlong haligi ng lehislatura, ehekutibo at hudikatura. gaurav@ubuntu:~/workspace$
grep
ginamit nang walang tubo ( | )kagamitan
grep
ay maaaring magamit nang direkta bilang isang indibidwal na utos nang hindi gumagamit ng pipe ( |
) kagamitan.
Syntax:
grep [string_to_be_searched] [filename]
Halimbawa:
grep India sample.txt
Output:
Ang India ay Isang Magandang Bansa ng Mga Tao na Mapagmahal sa Kapayapaan. Ang India ay nagmamalasakit sa mga tao bilang ito ay mapagkukunan
Kaya, ginamit ko ang grep
utos nang direkta upang i-filter ang mga linya na naglalaman ng string na 'India' mula sa text file na 'sample.txt'.
Case-insensitive na paghahanap gamit ang grep
utos
Napakaingat ng Linux tungkol sa case-sensitivity kapag pinapagana namin ang mga command sa terminal. Ito ay nangangailangan ng gumagamit na maging maingat tungkol sa kaso ng string na inilagay sa command.
Tingnan natin ito sa pamamagitan ng isang halimbawa.
grep peace sample.txt
Sa kasong ito, hindi kami makakakuha ng isang output dahil walang umiiral na salita bilang 'kapayapaan' sa sample na file. Mayroon tayong salitang 'Peace' na may capital na 'P'. Pareho ang salita ngunit kapag ginamit natin ang grep
command nang walang anumang opsyon, hinahanap nito ang eksaktong tugma sa file, na binabalewala ang anumang mga pagbabago sa letter case.
Upang maiwasan ang kalabuan na ito, maaari mo lamang gamitin ang -i
opsyon na literal na nagsasabi sa grep
utos "Kalimutan ang tungkol sa kaso kung saan inilagay ko ang string, at hanapin lamang ang lahat ng tumutugmang pattern sa file."
Syntax:
grep -i [string] [filename]
Halimbawa:
grep -i peace sample.txt
Output:
ANG INDIA AY ISANG MAGANDANG BANSA NG MGA TAONG MAHAL SA KAPAYAPAAN. Ang India ay Isang Magandang Bansa ng Mga Tao na Mapagmahal sa Kapayapaan.
Ang lahat ng magkatugmang linya ay ipinapakita nang hindi isinasaalang-alang ang kaso kung saan ang tumutugmang string ay.
Recursive na paghahanap gamit ang grep
utos
Ang -r
Ang opsyon ay maghahanap para sa lahat ng mga file sa isang direktoryo at lahat ng mga sub-direktoryo nito na tumutugma sa pattern ng string na ibinigay ng user sa command.
Syntax:
grep -i -r [string] [file_path]
Halimbawa:
grep -i -r tomcat /home/gaurav/workspace
Ang string dito ay 'tomcat' at hahanapin ito sa workspace ng direktoryo. I-scan din ang lahat ng mga subdirectory at file sa direktoryo ng 'workspace' upang tumugma sa ibinigay na pattern ng string.
Output:
./context_log.policy:// catalina.policy - Mga Pahintulot sa Patakaran sa Seguridad para sa Tomcat 7 ./context_log.policy:// Tandaan: Kung ang tomcat-juli.jar ay nasa ${catalina.base} at wala sa ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JARs ./catalina.properties:# - Tomcat API JARs ./catalina.properties:# - Tomcat JARs ./catalina.properties:# - Karaniwang hindi Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000 . /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
TANDAAN: Habang ginagamit ang -r
opsyon kasama ang grep
command na kailangan nating ibigay ang path ng file at hindi ang filename
Naghahanap ng buong salita lamang gamit ang grep
utos
Maraming beses ang kaso ay maghahanap ka ng isang salita ngunit mapupuno mo ang iyong terminal ng mga katugmang linya na naglalaman ng iyong katugmang salita ngunit hindi bilang isang indibidwal na salita. Maaari mong makita ang mga linya na naglalaman ng ilang mga salita na ang subpart ay ang string na iyong inilagay.
Nalilito dito? Huwag mag-alala, mas madaling maunawaan kapag nakuha mo na ang halimbawa.
Halimbawa:
Dito, gusto kong maghanap ng indibidwal na salitang 'cart' at ipakita ang lahat ng linyang tumutugma sa salitang ito sa file na 'sample.txt'.
grep -i cart sample.txt
Output:
Cartesian coordinate kahalagahan ng lahat ng Cartesian coordinate. Ang paggamit ng kariton ng toro ay isang pangkaraniwang tanawin sa nayon para sa mga gawaing agraryo. Nawala ang kariton nang iwan ito ng bata.
Sa output, maaari mong obserbahan na ang salitang 'Cartesian' ay naglalaman din ng salitang 'cart' at samakatuwid, ang mga linya na naglalaman ng salitang 'Cartesian' ay ipinapakita din kahit na hindi namin nais na ipakita ang mga ito.
Maaari mong gamitin ang -w
opsyon kasama ang grep
utos upang malutas ang kalabuan na ito.
Syntax:
grep -i -w [string] [filename]
Halimbawa:
grep -i -w cart sample.txt
Output:
Ang paggamit ng kariton ng toro ay karaniwang tanawin sa nayon para sa mga gawaing pang-agraryo. Nawala ang kariton nang pakawalan ito ng bata.
Ngayon, kapag ginamit mo na ang –w
opsyon na may grep
makukuha mo lamang ang mga linya kung saan ang salitang 'cart' ay ginagamit sa kabuuan.
Baliktad na paghahanap gamit ang grep
utos
grep
Ang command ay maaari ding gamitin sa reverse na paraan. Magagamit natin ang grep
kabaligtaran ng utos sa pamamagitan ng pagtatago ng mga katugmang linya at pagpapakita lamang ng mga linya kung saan hindi nahanap ang tugma. Magagawa mo ito gamit ang -v
opsyon kasama ang grep
utos.
Syntax:
grep -i -v [string] [filename]
Halimbawa:
grep -i -v resource sample.txt
Output:
ANG INDIA AY ISANG MAGANDANG BANSA NG MGA TAONG MAHAL SA KAPAYAPAAN. ang India ay nakatayo sa tatlong haligi ng lehislatura, ehekutibo at hudikatura. Ang India ay Isang Magandang Bansa ng Mga Tao na Mapagmahal sa Kapayapaan. cartesian coordinate kahalagahan ng lahat ng ika cartesian coordinate. Ang paggamit ng kariton ng toro ay karaniwang tanawin sa nayon para sa mga gawaing pang-agraryo. Ito ang dulo ng sample file.
Sa output, ang lahat ng iba pang mga linya ay ipinapakita maliban sa linya na naglalaman ng salitang 'resource'.
Nagbibilang ng mga pangyayari ng tumutugmang string
Ang output ng grep
Ang command ay kadalasang napakahaba kung ang data sa file ay malawak. Kung mas marami ang mga tugma, mas mahaba ang mga output ng grep
utos. Binibigyan ka ng Linux ng isang opsyon kung saan maaari mong ipakita ang bilang ng mga paglitaw ng tugma.
Syntax:
grep -i -c [string] [filename]
Halimbawa:
grep -i -c india sample.txt
Output:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Dito, ang output ay isang numero na kung saan ay ang bilang ng mga paglitaw ng salitang 'India' sa file sample.txt.
TANDAAN: Ginamit ko ang -i
opsyon sa bawat halimbawa upang maging ligtas lamang sa isyu ng pagiging sensitibo ng kaso. Kung sakaling sigurado ka tungkol sa kaso ng salita na iyong hinahanap, maaari mong ligtas na alisin ang -i
opsyon.
Konklusyon
Natutunan namin ang mga pangunahing gamit ng grep
command sa mga Linux system sa tutorial na ito. Natutunan din naming magpakita ng iba't ibang content na pinakaangkop sa aming mga kinakailangan at hindi siksikan sa terminal ng maraming linya. grep
Ang command ay tiyak na magiging isang time-saver kung gagamitin para sa pag-scan ng malalaking data-set.