20 Mapuslanon nga egrep Command nga mga Ehemplo sa Linux


Mubo: Niini nga giya, atong hisgotan ang pipila ka praktikal nga mga pananglitan sa egrep command. Human sa pagsunod niini nga giya, ang mga tiggamit makahimo sa pagpangita sa teksto nga mas episyente sa Linux.

Napakyas ka na ba tungod kay dili nimo makit-an ang gikinahanglan nga kasayuran sa mga troso? Ang pagkuha sa gikinahanglan nga impormasyon gikan sa usa ka dako nga set sa datos usa ka komplikado ug makahurot sa panahon nga buluhaton.

Ang mga butang mahimong mahagiton kung ang operating system wala maghatag sa husto nga mga himan ug ania ang Linux aron luwason ka. Ang Linux naghatag og lain-laing mga text-filtering utilities sama sa sed, cut, etc.

Bisan pa, ang egrep usa sa labing kusgan ug sagad nga gigamit nga mga gamit alang sa pagproseso sa teksto sa Linux, ug among hisgutan ang pipila ka mga pananglitan sa egrep command.

Ang egrep command sa Linux giila sa pamilya sa grep command, nga gigamit sa pagpangita ug pagpares sa usa ka partikular nga pattern sa mga file. Kini naglihok nga susama sa grep -E (grep Extended regex), apan kasagaran kini nangita sa usa ka partikular nga file o bisan mga linya sa linya o pag-imprinta sa linya sa gihatag nga file.

Ang syntax sa egrep command mao ang mosunod:

$ egrep [OPTIONS] PATTERNS [FILES]

Maghimo kita og sampol nga text file nga adunay mosunod nga mga sulod aron magamit ang usa ka pananglitan:

$ cat sample.txt

Dinhi, atong makita nga ang text file andam na. Karon atong hisgotan ang pipila ka kasagarang mga pananglitan nga mahimong gamiton kada adlaw.

Magsugod kita sa usa ka yano nga panig-ingnan nga pagpares sa sumbanan, diin magamit nato ang ubos nga sugo sa pagpangita og string professional sa sample.txt file:

$ egrep professionals sample.txt

Dinhi, atong makita nga ang command nag-imprinta sa linya nga naglangkob sa gipiho nga sumbanan.

Mahimo natong himoon nga mas impormasyon ang output pinaagi sa pag-highlight sa gipares nga pattern. Aron makab-ot kini, mahimo natong gamiton ang --color nga opsyon sa egrep command. Pananglitan, ang ubos nga sugo magpasiugda sa teksto propesyonal sa pula nga kolor:

$ egrep --color=auto professionals sample.txt

Dinhi, atong makita nga ang sama nga output mao ang mas impormasyon kon itandi sa miaging usa. Usab, dali natong mailhan nga ang pulong propesyonal gibalikbalik sa duha ka higayon.

Sa kadaghanan sa mga sistema sa Linux ang setting sa ibabaw gipalihok pinaagi sa default gamit ang mosunod nga alias:

$ alias egrep='egrep –color=auto'

Gidawat sa egrep command ang daghang mga file isip argumento, nga nagtugot kanamo sa pagpangita sa usa ka partikular nga pattern sa daghang mga file. Atong sabton kini uban ang usa ka pananglitan.

Una, paghimo og kopya sa sample.txt file:

$ cp sample.txt sample-copy.txt

Karon, pangitaa ang pattern professional sa duha ka file:

$ egrep professionals sample.txt sample-copy.txt 

Sa pananglitan sa ibabaw, atong makita ang ngalan sa file sa output, nga nagrepresentar sa gipares nga linya gikan sa maong file.

Usahay kinahanglan lang naton mahibal-an kung naa o wala ang pattern sa file. Kung oo unya pila ka linya ang naa niini? Sa maong mga kaso, mahimo natong gamiton ang -c nga opsyon sa command.

Pananglitan, ang ubos nga sugo magpakita sa 1 isip output tungod kay ang pulong propesyonal anaa sa usa lang ka linya.

$ egrep -c professionals sample.txt

1

Sa miaging pananglitan, among nakita nga ang -c nga opsyon wala mag-ihap sa gidaghanon sa mga panghitabo sa pattern. Pananglitan, ang pulong propesyonal makita sa duha ka higayon sa samang linya apan ang -c nga opsyon nagtratar niini isip usa ka tugma lamang.

Sa ingon nga mga kaso, mahimo natong gamiton ang -o nga opsyon sa command aron i-print lamang ang gipares nga pattern. Pananglitan, ang ubos nga sugo magpakita sa pulong propesyonal sa duha ka managlahing linya:

$ egrep -o professionals sample.txt

Karon, ihap nato ang mga linya gamit ang wc command:

$ egrep -o professionals sample.txt | wc -l

Sa pananglitan sa ibabaw, gigamit namo ang kombinasyon sa egrep ug wc nga mga sugo aron maihap ang gidaghanon sa mga panghitabo sa partikular nga sumbanan.

Sa default, ang egrep naghimo sa pattern matching sa case-sensitive nga paagi. Nagpasabot kini sa mga pulong - kami, Kami, kami, ug KAMI gitratar nga lahi nga mga pulong. Apan, mahimo namong ipatuman ang case-insensitive nga pagpangita gamit ang -i nga opsyon.

Pananglitan, sa ubos nga command pattern match molampos ang text we ug We:

$ egrep -i we sample.txt 

Sa miaging pananglitan, among nakita nga ang egrep command nagpahigayon ug partial match. Pananglitan, sa dihang among gipangita ang teksto kami unya ang pattern matching milampos usab sa ubang mga teksto. Sama sa web, website, ug were.

Aron mabuntog kini nga limitasyon, mahimo naton ang -w nga kapilian, nga nagpatuman sa tibuuk nga pagpares sa pulong.

$ egrep -w we sample.txt

Sa pagkakaron, gigamit namo ang egrep command aron i-print ang mga linya diin anaa ang gihatag nga pattern. Bisan pa, usahay gusto namon nga himuon ang operasyon sa kaatbang nga paagi.

Pananglitan, mahimo natong i-print ang mga linya diin wala ang gihatag nga pattern. Atong makab-ot kini sa tabang sa -v nga opsyon:

$ egrep -v we sample.txt

Dinhi, atong makita nga ang sugo nag-imprinta sa tanang linya nga walay sulod nga teksto kami.

Mahimo natong gamiton ang -n nga opsyon sa command aron mahimo ang line numbering, nga nagpakita sa numero sa linya sa output kung ang pattern matching molampos. Kining yano nga limbong naghimo sa output nga mas makahuluganon.

$ egrep -n professionals sample.txt

Sa ibabaw nga output, atong makita nga ang pulong propesyonal anaa sa ika-5 nga linya.

Sa hilum nga mode, ang egrep command wala mag-print sa gipares nga pattern. Mao nga kinahanglan naton gamiton ang pagbalik nga kantidad sa mando aron mahibal-an kung milampos ba o wala ang pagpares sa pattern.

Mahimo natong gamiton ang -q nga opsyon sa command aron mahimo ang quiet mode, nga magamit samtang nagsulat og shell scripts.

$ egrep -q professionals sample.txt
$ egrep -q non-existing-pattern sample.txt

Niini nga pananglitan, ang zero return value nagpakita sa presensya sa pattern samtang ang non-zero value nagpakita sa pagkawala sa pattern.

Usahay, makatarunganon nga ipakita ang pipila ka mga linya sa palibot sa gipares nga sumbanan. Alang sa ingon nga mga sitwasyon, mahimo natong gamiton ang -B nga opsyon sa command, nga nagpakita sa N nga mga linya sa wala pa ang gipares nga pattern.

Pananglitan, ang ubos nga sugo mag-imprinta sa linya diin ang pattern match molampos ingon man ang 2 ka linya sa wala pa kini.

$ egrep -B 2 -n professionals sample.txt 

Niini nga pananglitan, among gigamit ang -n nga opsyon aron ipakita ang mga numero sa linya.

Sa susamang paagi, mahimo natong gamiton ang -A nga opsyon sa command aron ipakita ang mga linya human sa pattern match. Pananglitan, ang ubos nga sugo mag-imprinta sa linya diin ang pattern match molampos ingon man ang sunod nga 2 ka linya.

$ egrep -A 2 -n professionals sample.txt

Dugang pa niini, ang egrep command nagsuporta sa -C nga opsyon nga naghiusa sa functionality sa mga opsyon -A ug -B, nga nagpakita sa linya sa wala pa ug pagkahuman sa gipares nga pattern.

$ egrep -C 2 -n professionals sample.txt 

Sama sa gihisgutan kaniadto, mahimo namon nga himuon ang pagpares sa pattern sa daghang mga file. Bisan pa, ang sitwasyon mahimong malisud kung ang mga file naa sa ilawom sa daghang mga sub-direktoryo ug gipasa namon silang tanan ingon mga argumento sa mando.

Sa ingon nga mga kaso, mahimo namon nga himuon ang pattern matching sa usa ka recursive nga paagi gamit ang -r nga kapilian sama sa gipakita sa mosunod nga pananglitan.

Una, paghimo og 2 ka sub-direktoryo ug kopyaha ang sample.txt file ngadto kanila:

$ mkdir -p dir1/dir2
$ cp sample.txt dir1/
$ cp sample.txt dir1/dir2/

Karon, buhaton nato ang search operation sa recursive nga paagi:

$ egrep -r professionals dir1

Sa pananglitan sa ibabaw, atong makita nga ang pattern match milampos alang sa dir1/dir2/sample.txt ug dir1/sample.txt nga mga file.

Makagamit kami ug tuldok (.) nga karakter para sa bisan unsa nga karakter gawas sa katapusan sa linya. Pananglitan, ang ubos nga regular nga ekspresyon motakdo sa teksto nga har, kalo, ug adunay:

$ egrep "ha." sample.txt

Mahimo natong gamiton ang asterisk (*) aron ipares ang zero o daghan pa nga panghitabo sa miaging karakter. Pananglitan, ang ubos nga regular nga ekspresyon motakdo sa teksto nga adunay usa ka string kami nga gisundan sa zero o daghan pa nga mga panghitabo sa karakter b.

$ egrep "web*" sample.txt

Mahimo natong gamiton ang plus (+) aron ipares ang usa o daghan pang panghitabo sa miaging karakter. Pananglitan, ang ubos nga regular nga ekspresyon motakdo sa teksto nga naglangkob sa string we nga gisundan sa labing menos usa ka panghitabo sa karakter b.

$ egrep "web+" sample.txt

Dinhi, atong makita nga ang pattern matching dili molampos para sa mga pulong – kami ug kani, tungod sa pagkawala sa karakter b.

Mahimo natong gamiton ang caret (^) aron irepresentar ang pagsugod sa linya. Pananglitan, ang ubos nga regular nga ekspresyon nag-imprinta sa mga linya nga nagsugod sa teksto Kami:

$ egrep "^We" sample.txt

Mahimo natong gamiton ang dolyar nga ($) aron irepresentar ang katapusan sa linya. Pananglitan, ang ubos nga regular nga ekspresyon nag-imprinta sa mga linya nga nagtapos sa teksto e.:

$ egrep "e.$" sample.txt

Mahimo natong gamiton ang caret (^) dayong sundan sa dolyar ($) aron irepresentar ang walay sulod nga linya. Gamiton nato kini sa usa ka regular nga ekspresyon aron makuha ang walay sulod nga mga linya:

$ egrep -n -v "^$" sample.txt

Sa ibabaw nga output, atong makita nga ang mga numero sa linya 2, 4, 6, 8, ug 10 wala ipakita kay walay sulod.

Niini nga artikulo, among gihisgutan ang pipila ka mapuslanon nga mga pananglitan sa mga sugo sa egrep. Mahimong gamiton sa usa kini nga mga pananglitan sa adlaw-adlaw nga kinabuhi aron mapauswag ang pagka-produktibo.

Nakahibalo ka ba sa uban pang labing maayo nga pananglitan sa egrep command sa Linux? Ipahibalo kanamo ang imong mga panglantaw sa mga komento sa ubos.