Anonim

Ang Global regular expression print o lamang grep ay isa sa mga pinaka-maraming nalalaman at karaniwang mga utos sa Unix at Linux system. Ang utos ay naghahanap para sa solong o maraming mga file ng pag-input at pagtutugma ng mga linya ng pattern. Bilang isang resulta, nakakakuha ka ng isang karaniwang output kasama ang mga linya ng pagtutugma.

Kung hindi mo tinukoy ang isang file, ginagamit ng grep ang pamantayang input para sa mga readout at malamang na magiging output ng isa pang utos. Sa kabuuan, ang grep ay nagtatampok ng direktang syntax kung gagamitin mo ito o wala ang file name.

Binibigyan ka ng artikulong ito ng isang mabilis na pangkalahatang-ideya ng grep syntax at ilang mga pangunahing utos na maaari mong magamit sa o walang pangalan ng file.

Bago ka magsimula

Ang lahat ng mga utos ng grep ay sumusunod sa parehong syntax at ang bawat parameter ay may isang tiyak na function. Narito ang halimbawang linya:

grep PATTERN

Maaari kang gumamit ng isang bilang ng mga pagpipilian sa grep upang makontrol ang command output at ang numero ay nagsisimula sa zero. Ipinapahiwatig ng PATTERN ang pattern ng paghahanap na nais mong ilapat. Tulad ng para sa FILE, ito ay kung saan pumunta ang pangalan ng file o mga pangalan, ngunit ang parameter ay maaaring itakda sa zero.

Paghahanap ng String sa Command Output

Tulad ng ipinahiwatig, hindi mo kailangang gumamit ng mga tiyak na file ng pag-input. Ang ibang output ng utos ay maaaring magamit sa grep upang makakuha ng mga linya na eksaktong tumutugma sa isang pattern. Maaari itong magamit upang matukoy kung aling mga proseso ang aktibo sa system. Ito ay sample na synt synt command:

$ ps -ef | grep www-data

Ang output na makukuha mo ay dapat magmukhang isang bagay tulad nito:

www-data 18247 12675 4 16:00? 00:00:00 php-fpm: pool www
ugat 18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto -exclude-dir = .bzr -exclude-dir = CVS –exclude-dir = .git -exclude-dir = .hg -exclude- dir = .svn www-data
www-data 31147 12770 0 Oct22? 00:05:51 nginx: proseso ng manggagawa
www-data 31148 12770 0 Oct22? 00:00:00 nginx: proseso ng manager ng cache

Mayroong isang paraan upang ibukod ang linya ng utos na nagtatampok ng mga proseso ng grep. Para sa mga ito, kailangan mong gamitin ang $ ps -ef | grep www-data | utos grep -v grep .

Paghahanap ng Grep na Salita

Maaari kang gumamit ng mga utos na grep upang maghanap para sa mga tukoy na salita sa mga file sa iyong system. Sa katunayan, hindi na kailangang mag-type ng isang buong salita. Maaari mo lamang gamitin ang gnu, halimbawa, at ang mga output ay naglalabas ng lahat ng mga salita na mayroong tatlong titik sa kanila. Ang command syntax ay:

$ grep gnu / usr / ibahagi / salita

Matapos maipatupad ang utos, dapat magmukhang ganito ang iyong output:

cygnus
gnu
interregnum
lgnu9d
lignum
magnum
magnuson
sphagnum
wingnut

Sa kabilang banda, maaari kang maghanap para sa partikular na salita o string ng mga titik at ibukod ang lahat. Para sa mga ito, kailangan mong magdagdag ng -w o –word - regexp sa syntax. Sa kasong ito, ganito ang halimbawa ng utos - $ grep -w gnu / usr / share / mga salita .

Tandaan: Para sa mga hangarin sa gramatika, ang ilan sa mga utos ay may buong paghinto sa pagtatapos. Hindi mo na kailangan ang tanda ng bantas para sa grep. Ibukod ito kapag kinopya mo / i-paste ang utos.

Sensitive ba ang Grep Case?

Lahat ng mga utos ng grep ay sensitibo sa kaso sa pamamagitan ng default. Nangangahulugan ito na ang paggamit ng mga maliliit na titik at malalaking character ay may pagkakaiba sa utos mismo. Gayunpaman, maaari kang magdagdag - i ( - huwag pansinin - kaso ) sa linya ng command at payagan ang system na maghanap para sa parehong mga pang-itaas at mas mababang mga salita ng kaso.

Halimbawa, ang iyong utos sa pag-input ay maaaring magmukhang ganito ang $ grep -i Zebra / usr / ibahagi / salita . Pinapayagan nito ang output na tumugma sa anumang kumbinasyon ng mga pang-itaas at mas mababang mga titik ng kaso kapag ito ay naghahanap para sa zebra.

Mga Numero ng Linya

Gamitin ang pagpipilian na -line-number o lamang-upang matukoy ang bilang ng mga linya na may isang string na tumutugma sa isang partikular na pattern ng paghahanap. Bilang isang resulta, nakakakuha ka ng isang karaniwang output na may isang numero ng linya sa harap nito.

Ang eksaktong utos ay maaaring magmukhang ganito: $ grep -n 10000 / etc / serbisyo . Sa pagpapatupad, ang output ay nagbibigay ng lahat ng mga tugma na natagpuan sa 10000 linya. Tingnan ang sample sa ibaba:

10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp

Mga file sa Folder

Maaari kang maglagay ng asterisk sa likod ng isang utos na grep sa halip na isang pangalan ng file. Gamit muli ang pamantayan ng gnu ang utos ay mukhang ganito ang $ grep gnu * at inilalista ng output ang mga file na naglalaman ng gnu . Mahalagang tandaan na ang ganitong uri ng utos ay nagbabalik ng isang linya.

Tandaan: Sa grep, ang isang linya ay tumutukoy sa isang pagkakasunud-sunod ng mga character na tumatakbo hanggang sa isang tinukoy na pahinga. Maliban kung pinuhin mo ang paghahanap, ang output ay maaaring maglaman ng buong talata ng impormasyon.

Magsagawa ng Susunod na Hakbang sa Grep

Gabay lamang sa gabay na ito ang ibabaw ng kung ano ang maaari mong gawin sa grep. Maaaring tumagal ng ilang sandali upang makuha ang lahat ng mga logro at pagtatapos, ngunit ang syntax ay sumusunod sa isang medyo simpleng prinsipyo. At sa ilang pagsasanay, magagawa mong pinuhin ang iyong mga paghahanap sa pagiging perpekto, kasama o walang file name.

Paano grep nang walang pangalan ng file