Grep Command sa Linux

Grep Command Linux



Ang Grep (pandaigdigang regular na expression na naka-print) na utos ay ang pinaka-makapangyarihang at regular na ginagamit na Linux command-line utility. Gamit ang Grep, maaari kang maghanap para sa kapaki-pakinabang na impormasyon sa pamamagitan ng pagtukoy ng isang pamantayan sa paghahanap. Naghahanap ito para sa isang partikular na pattern ng pagpapahayag sa isang tinukoy na file. Kapag nakakita ito ng isang tugma, nai-print nito ang lahat ng mga linya ng isang file na tumugma sa tinukoy na pattern. Ito ay madaling gamiting kapag kailangan mong mag-filter sa pamamagitan ng malalaking mga file ng log.

Sa artikulong ito, ipapaliwanag namin ang paggamit ng grep utility na may iba't ibang mga halimbawa. Gagamitin namin ang Debian 10 para sa pagpapaliwanag ng mga utos at pamamaraan na nabanggit sa artikulong ito.







Pag-install ng Grep

Ang Grep ay naka-install sa karamihan ng mga pamamahagi ng Linux. Gayunpaman kung sakali, nawawala ito mula sa iyong system, maaari mo itong mai-install gamit ang sumusunod na pamamaraan sa Terminal:



$sudo apt-get install mahigpit na pagkakahawak

Paggamit ng Grep

Narito ang pangunahing syntax ng utos ng grep. Nagsisimula ito sa grep na sinusundan ng ilang mga pagpipilian at pamantayan sa paghahanap at pagkatapos ay nagtatapos sa pangalan ng file.



$mahigpit na pagkakahawak [mga pagpipilian]PATON[FILE ...]

Maghanap para sa mga file

Upang maghanap para sa isang pangalan ng file sa isang direktoryo na naglalaman ng isang tukoy na string dito, maaari mong gamitin ang grep sa sumusunod na paraan:





$ls -ang | mahigpit na pagkakahawak -akolubid

Halimbawa, upang maghanap para sa isang filename na naglalaman ng isang string pagsusulit , ang utos ay:

$ls-ang| mahigpit na pagkakahawak–Ipagsusulit

Inililista ng utos na ito ang lahat ng mga file na naglalaman ng string pagsusulit .



Maghanap ng isang string sa isang file

Upang maghanap para sa isang string sa isang partikular na file, maaari mong gamitin ang sumusunod na syntax ng utos:

$mahigpit na pagkakahawakfilename ng string

Halimbawa, upang maghanap para sa isang string pagsusulit sa isang file na pinangalanan testfile1 , ginamit namin ang sumusunod na utos :

$mahigpit na pagkakahawaktestfile ng empleyado1

Ang output sa itaas ay naibalik ang pangungusap mula sa testfile1 na naglalaman ng string empleado .

Maghanap para sa isang string sa maraming mga file

Upang maghanap para sa isang string sa maraming mga file, maaari mong gamitin ang sumusunod na syntax ng utos:

$mahigpit na pagkakahawakstring filename1 filename2

Halimbawa, upang maghanap para sa isang empleyado ng string sa aming dalawang file na testfile1 at testfile2, ginamit namin ang sumusunod na utos:

$mahigpit na pagkakahawaktestfile ng empleyado1 testfile2

Ililista ng utos sa itaas ang lahat ng mga linya na naglalaman ng empleyado ng string mula sa parehong mga file na testfile1 at testfile2.

Maaari mo ring gamitin ang isang wildcard character kung ang lahat ng mga filename ay nagsisimula sa parehong teksto.

$mahigpit na pagkakahawakfilename ng string*

Tulad ng, kung kukuha kami ng halimbawa sa itaas kung saan naroon ang aming mga filename testfile1 at testfile2 , ang utos ay:

$mahigpit na pagkakahawaktestfile ng empleyado*

Maghanap ng isang string sa isang file sa pamamagitan ng hindi pagpapansin sa kaso ng string

Kadalasan, naranasan mo iyan kapag naghanap ka para sa isang bagay gamit ang grep ngunit hindi ka nakakatanggap ng isang output. Nangyayari ito dahil sa isang kaso na hindi pagtutugma habang naghahanap ng isang string. Tulad ng sa aming halimbawa, kung nagkamali kaming gumamit Empleado sa halip na empleado , babalik itong wala dahil naglalaman ang aming file ng string empleado sa maliliit na letra.

Maaari mong sabihin sa grep na huwag pansinin ang kaso ng search string sa pamamagitan ng paggamit ng –i flag pagkatapos ng grep tulad ng sumusunod:

$mahigpit na pagkakahawak–I filename ng string

Sa pamamagitan ng paggamit ng flag na –i, isasagawa ng utos ang kaso na hindi sensitibo sa paghahanap at ibabalik ang lahat ng mga linya na naglalaman ng string empleado sa loob nito nang hindi isinasaalang-alang ang mga titik ay nasa malalaki o maliit na titik.

Paghahanap gamit ang regular na expression

Kung maayos na ginamit, ang regular na expression ay isang mabisang tampok sa grep. Sa utos ng Grep, maaari mong tukuyin ang isang regular na expression na may simula at isang nagtatapos na keyword. Sa paggawa nito, hindi mo kakailanganing mai-type ang buong linya gamit ang utos ng grep. Ang sumusunod na syntax ay maaaring gamitin para sa hangaring ito.

$mahigpit na pagkakahawakpanimulang keyword.*nagtataposKeyword filename

Halimbawa, upang maghanap para sa isang linya sa isang file na pinangalanang testfile1 na nagsisimula sa string na ito at nagtatapos sa data ng string, ginamit namin ang sumusunod na utos:

$mahigpit na pagkakahawakito*data testfile1

Ipi-print nito ang buong linya mula sa testfile1 naglalaman ng expression (pagsisimula ng keyword na ito at ang nagtatapos na data ng keyword).

I-print ang partikular na bilang ng mga linya pagkatapos / bago ang string ng paghahanap

Maaari mo ring ipakita ang tukoy na bilang ng mga linya sa isang file bago / pagkatapos ng isang tugma sa string kasama ang naitugmang string mismo. Ang sumusunod na syntax ay maaaring gamitin para sa hangaring ito:

$mahigpit na pagkakahawak -TO <N>filename ng string

Ipapakita nito ang bilang ng mga linya pagkatapos na maiugnay ang string sa tinukoy na file kasama ang tinugmang string.

Halimbawa, ito ang aming halimbawang file na pinangalanan testfile2 .

Ang sumusunod na utos ay maglalabas ng naitugmang linya na naglalaman ng string empleado , kasama ang 2 linya pagkatapos nito.

$mahigpit na pagkakahawak-TO2–Ang testfile ng empleyado2

Katulad nito, upang maipakita ang bilang ng mga linya bago ang katugmang string sa isang tukoy na file, gamitin ang sumusunod na syntax:

$mahigpit na pagkakahawak -B <N>filename ng string

Upang maipakita ang bilang ng mga linya sa paligid ng string sa isang tukoy na file, gamitin ang sumusunod na syntax:

$mahigpit na pagkakahawak -C <N>filename ng string

Nagha-highlight ng paghahanap

Grep bilang default na naka-print na mga linya na naitugma ngunit hindi ipinakita kung aling bahagi ng linya ang naitugma. Kung gagamit ka ng pagpipilian na –kulay sa grep, ipapakita nito kung saan lumilitaw ang mga string ng machining sa iyong file. Grep bilang default na gamitin ang pulang kulay para sa pag-highlight.

Ang sumusunod na syntax ay maaaring gamitin para sa hangaring ito:

$mahigpit na pagkakahawakfilename ng string--kulay

Nagbibilang ng bilang ng mga tugma

Kung nais mong bilangin kung gaano karaming beses lumilitaw ang isang partikular na salita sa isang tukoy na file, maaari mong gamitin ang grep na may –c na pagpipilian. Ibinabalik lamang nito ang bilang ng mga tugma kaysa sa mga tugma mismo. Ang sumusunod na syntax ay maaaring gamitin para sa hangaring ito:

$mahigpit na pagkakahawak–C string filename

Ito ang aming sample na file na parang:

Ang sumusunod ay isang halimbawa ng isang utos na ibinalik ang bilang ng beses sa salita file lumitaw sa isang file na pinangalanang testfile3 .

Baligtad na paghahanap

Minsan, nais mong magsagawa ng isang pabalik na paghahanap na nagpapakita ng lahat ng mga linya maliban na tumugma sa input. Upang magawa ito, gamitin lamang ang flag na –v na sinusundan ng grep:

$mahigpit na pagkakahawak–V filename ng string

Halimbawa, upang ipakita ang lahat ng mga linya sa isang file testfile3 na hindi naglalaman ng salitang account sa kanila, ginamit namin ang sumusunod na utos:

$mahigpit na pagkakahawak–V testfile ng account3

Paggamit ng Grep sa iba pang mga utos

Maaari ding magamit ang Grep upang salain ang kinakailangang resulta mula sa iba't ibang mga output ng utos. Halimbawa, mula sa apt na listahan na naka-install output ng utos, nais mong makita lamang ang mga pakete na awtomatikong na-install, maaari mong i-filter ang resulta gamit ang grep tulad ng sumusunod:

$apt- na-installlistahan| mahigpit na pagkakahawakawtomatiko

Katulad nito, ang lscpu ay nagbibigay ng detalyadong impormasyon tungkol sa CPU. Kung interesado ka lamang sa impormasyon tungkol sa arkitektura ng CPU, maaari mo itong i-filter gamit ang sumusunod na utos:

$lscpu| mahigpit na pagkakahawakArkitektura

Sa artikulong ito, inilarawan namin ang ilang mga halimbawa na makakatulong sa iyo sa pag-unawa sa mga utos ng grep at paggamit nito sa iba't ibang mga kundisyon. Ang pagkakaroon ng isang malakas na mahigpit na pagkakahawak sa utos ng grep ay maaaring makatipid ng maraming oras kung kailangan mong tingnan ang malaking pagsasaayos o mag-log ng mga file at i-sketch ang kapaki-pakinabang na impormasyon sa pamamagitan ng mga ito.