Izpratne par komandu grep ar praktiskiem piemēriem, lai viegli filtrētu un parādītu faila saturu
GREP
apzīmē “Global Regular Expression Print”. Tā ir noderīga komandrindas utilīta, ko nodrošina Linux, lai meklētu teksta rindiņu, kas atbilst lietotāja sniegtajam modelim.
grep
ņem no lietotāja ievadi virkņu vai vārdu veidā, kurus lietotājs vēlas meklēt noteiktā failā. Pēc tam komanda pārbauda lietotāja norādīto failu šim modelim un pēc tam atgriež rindas, kas atbilst sniegtajam modelim.
Tas veic lielisku darbu, filtrējot faila saturu, tādējādi atvieglojot mūsu uzdevumu meklēt noteiktu saturu vienā vai vairākos failos vienlaikus.
Šajā rakstā apskatīsim, kā darbojas grep
komandu ar dažiem praktiskiem piemēriem.
Iespējas, kas pieejamas ar grep
komandu
Šīs ir dažas no pamata iespējām, kuras jūs bieži izmantosit kopā ar grep
komandu.
Opcija | Apraksts |
-i | Meklēšanai, kas nav reģistrjutīga |
-r | Lai rekursīvi meklētu visus failus norādītajā direktorijā un tā apakšdirektorijās |
-c | Lai parādītu kopējo virknes parādīšanās reižu skaitu |
-v | Lai parādītu neatbilstošās līnijas |
-w | Filtrs šim konkrētajam vārdam, ko lieto atsevišķi |
Izmantojot grep
komandu
grep
komandu parasti izmanto ar cauruli (|
) lietderība. To var ieviest ar čaulas cauruli, ja vēlaties to izmantot ar dažām citām Linux komandām. Lai gan, grep
var izmantot arī atsevišķi bez caurules (|
) lietderība.
Apskatīsim dažas pamata sintakses grep
komanda ar un bez caurules utilīta.
Vispirms parādīšu teksta faila paraugu, ko izmantošu, lai ilustrētu grep
komandu.
INDIJA IR SKAISTA MIERU MĪLOŠU CILVĒKU VALSTS. Indija balstās uz trim likumdošanas, izpildvaras un tiesu varas pīlāriem. Indija ir skaista miera valsts, kas mīl cilvēkus. Indija rūpējas par cilvēkiem, jo tās resurss ir Dekarta koordinātas visu th Dekarta koordinātas nozīme. Tālāk ir divas tukšas rindas. vēršu pajūgu izmantošana ciematā ir ierasta parādība agrārajos darbos. Šīs ir parauga faila beigas.
grep
izmanto ar cauruli ( | )lietderība
grep
komandu var ieviest kopā ar citām Linux komandām, izmantojot čaulas caurules. Piemēram, izmantojot kaķis
komanda, lai parādītu faila saturu, bet tajā pašā laikā ievadītu izvadi, izmantojot grep
komandu, lai parādītu tikai to saturu, kuru vēlaties redzēt. Tas būs skaidrāks, kad apskatīsim piemēru.
Sintakse:
[komanda] | grep [string]
Piemērs:
kaķa paraugs.txt | grep likumdevējs
Šeit es izmantoju kaķis
komandu, lai parādītu dažas rindiņas no faila “sample.txt”. Jāattēlo tikai tās rindas, kurās ir vārds “likumdevējs”, un pārējās rindas tiek ignorētas.
Izvade:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india balstās uz trim likumdevēja, izpildvaras un tiesu varas pīlāriem. gaurav@ubuntu:~/workspace$
grep
lietots bez caurules ( | )lietderība
grep
var pat izmantot tieši kā atsevišķu komandu, neizmantojot cauruli ( |
) lietderība.
Sintakse:
grep [virkne, kas_jāmeklē] [faila nosaukums]
Piemērs:
grep Indija paraugs.txt
Izvade:
Indija ir skaista miera valsts, kas mīl cilvēkus. Indija rūpējas par cilvēkiem kā savu resursu
Tādējādi esmu izmantojis grep
komandu tieši, lai no teksta faila “sample.txt” filtrētu rindas, kurās ir virkne “Indija”.
reģistrjutīga meklēšana, izmantojot grep
komandu
Linux ir ļoti piesardzīgs attiecībā uz reģistrjutību, kad mēs aktivizējam komandas terminālī. Tas prasa, lai lietotājs būtu uzmanīgs attiecībā uz komandā ievietotās virknes reģistru.
Apskatīsim to ar piemēru.
grep miera paraugs.txt
Šajā gadījumā mēs nesaņemsim izvadi, jo parauga failā nav vārda “miers”. Mums ir vārds "Miers" ar lielo "P". Vārds ir tas pats, bet, kad mēs lietojam grep
komanda bez jebkādas opcijas, tā meklē precīzu atbilstību failā, neņemot vērā izmaiņas burtu reģistros.
Lai izvairītos no šīs neskaidrības, varat vienkārši izmantot -i
opcija, kas burtiski stāsta grep
komandu "aizmirstiet par gadījumu, kad esmu ievietojis virkni, un vienkārši meklējiet failā visus atbilstošos modeļus."
Sintakse:
grep -i [virkne] [faila nosaukums]
Piemērs:
grep -i miera paraugs.txt
Izvade:
INDIJA IR SKAISTA MIERU MĪLOŠU CILVĒKU VALSTS. Indija ir skaista miera valsts, kas mīl cilvēkus.
Visas atbilstošās rindas tiek parādītas neatkarīgi no gadījuma, kurā atrodas atbilstošā virkne.
Rekursīvā meklēšana, izmantojot grep
komandu
The -r
opcija meklēs visus failus direktorijā un visos tā apakšdirektorijos, kas atbilst virknes modelim, ko lietotājs norādījis komandā.
Sintakse:
grep -i -r [virkne] [faila_ceļš]
Piemērs:
grep -i -r runcis /home/gaurav/workspace
Virkne šeit ir “runcis”, un tā tiks meklēta direktoriju darbvietā. Tiks skenēti arī visi apakšdirektoriji un faili direktorijā “darbvietas”, lai tie atbilstu norādītajam virknes modelim.
Izvade:
./context_log.policy:// catalina.policy — Tomcat 7 drošības politikas atļaujas ./context_log.policy:// Piezīme: ja tomcat-juli.jar atrodas ${catalina.base}, nevis ${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 JAR ./catalina.properties:# - Tomcat API JAR ./catalina.properties:# - Tomcat JAR ./catalina.properties:# - Bieži vien Tomcat JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catal:#ina. tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache=5.cache0 /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
PIEZĪME: Lietojot -r
opcija ar grep
komanda mums ir jānorāda faila ceļš, nevis faila nosaukums
Visu vārdu meklēšana tikai ar grep
komandu
Daudzas reizes jūs meklēsit vienu vārdu, bet galu galā aizpildīsit savu termināli ar atbilstošām rindiņām, kas satur atbilstošo vārdu, bet ne kā atsevišķu vārdu. Jūs varat redzēt rindas, kurās ir daži vārdi, kuru apakšdaļa ir jūsu ievadītā virkne.
Vai esat sajaukts ar šo? Neuztraucieties, to ir daudz vieglāk saprast, kad esat ieguvis piemēru.
Piemērs:
Šeit es vēlos meklēt atsevišķu vārdu “grozs” un parādīt visas rindiņas, kas atbilst šim vārdam failā “sample.txt”.
grep -i groza paraugs.txt
Izvade:
Dekarta koordinātas nozīme visām Dekarta koordinātām. vēršu pajūgu izmantošana ciematā ir ierasta parādība agrārajos darbos. Rati pazuda, jo zēns tos atstāja brīvus.
Izvadē var novērot, ka vārds “Dekarta” satur arī vārdu “grozi”, un līdz ar to tiek parādītas arī rindas, kas satur vārdu “Dekarta”, lai gan mēs nevēlamies, lai tās tiktu parādītas.
Jūs varat izmantot -w
opcija ar grep
komanda, lai atrisinātu šo neskaidrību.
Sintakse:
grep -i -w [virkne] [faila nosaukums]
Piemērs:
grep -i -w groza paraugs.txt
Izvade:
vēršu pajūgu izmantošana ciematā ir ierasta parādība agrārajos darbos. Rati pazuda, jo zēns tos atstāja vaļīgu.
Tagad, kad esat izmantojis -w
variants ar grep
jūs iegūsit tikai tās rindas, kurās vārds “grozi” ir lietots kopumā.
Apgrieztā meklēšana, izmantojot grep
komandu
grep
komandu var izmantot arī apgrieztā veidā. Mēs varam izmantot grep
komandu pretēji, slēpjot atbilstošās rindas un parādot tikai tās rindas, kurās atbilstība nav atrasta. To var izdarīt, izmantojot -v
opcija ar grep
komandu.
Sintakse:
grep -i -v [virkne] [faila nosaukums]
Piemērs:
grep -i -v resursa paraugs.txt
Izvade:
INDIJA IR SKAISTA MIERU MĪLOŠU CILVĒKU VALSTS. Indija balstās uz trim likumdošanas, izpildvaras un tiesu varas pīlāriem. Indija ir skaista miera valsts, kas mīl cilvēkus. Dekarta koordinātas visu th Dekarta koordinātas nozīme. vēršu pajūgu izmantošana ciematā ir ierasta parādība agrārajos darbos. Šīs ir parauga faila beigas.
Izvadē tiek parādītas visas pārējās rindas, izņemot rindu, kurā ir vārds “resurss”.
Atbilstošās virknes gadījumu skaitīšana
Izvade no grep
komanda parasti ir ļoti gara, ja failā ir daudz datu. Jo vairāk sakritību, jo garākas ir izejas grep
komandu. Linux nodrošina opciju, kurā varat parādīt atbilstības gadījumu skaitu.
Sintakse:
grep -i -c [virkne] [faila nosaukums]
Piemērs:
grep -i -c Indijas paraugs.txt
Izvade:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Šeit izvade ir skaitlis, kas ir vārda “Indija” gadījumu skaits failā sample.txt.
PIEZĪME: Esmu izmantojis -i
iespēja katrā piemērā, lai tikai būtu droši saistībā ar reģistrjutīguma problēmu. Ja esat pārliecināts par meklētā vārda reģistru, varat droši izlaist -i
opciju.
Secinājums
Mēs esam iemācījušies pamata lietojumus grep
komandu Linux sistēmās šajā apmācībā. Mēs arī iemācījāmies attēlot dažādu saturu, kas vislabāk atbilst mūsu prasībām un nepārblīvēt termināli ar daudzām rindām. grep
komanda noteikti ietaupīs laiku, ja to izmantos lielu datu kopu skenēšanai.