12 Linux grep komandas praktiski piemēri


Vai jūs kādreiz esat saskāries ar uzdevumu meklēt konkrētu virkni vai modeli failā, tomēr nezināt, kur sākt meklēt? Nu, lūk, palūdziet!

grep ir spēcīgs failu modeļu meklētājs, kas aprīkots ar katru Linux izplatīšanu. Ja kāda iemesla dēļ tas nav instalēts jūsu sistēmā, varat to viegli instalēt, izmantojot pakotņu pārvaldnieku (apt-get uz Debian/Ubuntu un yum uz RHEL/CentOS/Fedora).

$ sudo apt-get install grep         #Debian/Ubuntu
$ sudo yum install grep             #RHEL/CentOS/Fedora

Esmu atklājis, ka vienkāršākais veids, kā saslapināt kājas ar grep, ir vienkārši ienirt un izmantot dažus reālās pasaules piemērus.

1. Meklēt un atrast failus

Pieņemsim, ka jūs tikko esat instalējis svaigu jaunā Ubuntu kopiju savā datorā un ka jūs piešķirat Python skriptu šāvienu. Jūs meklējāt tīmekli, meklējot apmācības, taču redzat, ka tiek izmantotas divas dažādas Python versijas, un jūs nezināt, kuru no tām jūsu sistēmā ir instalējis Ubuntu instalētājs vai vai tā ir instalējusi moduļus. Vienkārši izpildiet šo komandu:

# dpkg -l | grep -i python
ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
ii  python-pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library

Pirmkārt, mēs palaidām dpkg –l, kurā uzskaitīti instalētie * .deb pakotnes jūsu sistēmā. Otrkārt, mēs izvadījām šo izvadi uz grep –i python, kurā vienkāršie stāvokļi “iet grepēt un filtrēt un atdot visu ar“ pitonu ”.” Opcija –i ir paredzēta, lai ignorētu reģistrus, jo grep ir reģistrjutīgs. Opcijas –i izmantošana ir labs ieradums iekļūt, ja vien jūs, protams, nemēģināt noteikt precīzāku meklēšanu.

2. Meklējiet un filtrējiet failus

Grep var izmantot arī, lai meklētu un filtrētu atsevišķos failos vai vairākos failos. Ļauj izmantot šo scenāriju:

Jums ir problēmas ar Apache tīmekļa serveri, un jūs esat sazinājies ar vienu no daudzajiem lieliskajiem neto forumiem, lūdzot pēc palīdzības. Laipnā dvēsele, kas jums atbild, ir lūgusi ievietot faila/etc/apache2/sites-available/default-ssl saturu. Vai jums, puisim, kurš jums palīdz, un visiem, kas to lasa, nebūtu vieglāk, ja jūs varētu noņemt visas komentētās rindas? Nu tu vari! Vienkārši palaidiet šo:

# grep –v “#”  /etc/apache2/sites-available/default-ssl

Opcija –v liek grep apgriezt izvadi, kas nozīmē, ka tā vietā, lai drukātu atbilstošas līnijas, rīkojieties tieši pretēji un izdrukājiet visas rindas, kas neatbilst izteiksmei, šajā gadījumā # komentētās rindas.

3. Atrodiet visus tikai .mp3 failus

Grep var būt ļoti noderīgs, lai filtrētu no stdout. Piemēram, pieņemsim, ka jums ir vesela mape ar mūzikas failiem vairākos dažādos formātos. Jūs vēlaties atrast visus mākslinieka JayZ * .mp3 failus, taču nevēlaties nevienu no remiksētajiem celiņiem. Izmantojot meklēšanas komandu ar pāris grep caurulēm, triks:

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

Šajā piemērā mēs izmantojam meklēšanu, lai izdrukātu visus failus ar paplašinājumu * .mp3, izmantojot to grep –i, lai filtrētu un izdrukātu visus failus ar nosaukumu „JayZ”, un pēc tam vēl vienu cauruli grep –vi, kas filtrē un neizdrukā visus failu nosaukumus ar virkni (jebkurā gadījumā) “remiksēt”.

4. Parādīt rindu skaitu pirms vai pēc meklēšanas virknes

Vēl pāris iespējas ir –A un –B slēdži, kas parāda saskaņoto līniju un rindu skaitu, kas nāk pirms vai pēc meklēšanas virknes. Lai gan rokasgrāmatā ir sniegts detalizētāks skaidrojums, man visvieglāk ir atcerēties opcijas –A = pēc un –B = iepriekš:

# ifconfig | grep –A 4 eth0
# ifconfig | grep  -B 2 UP

5. Izdrukā līniju skaitu ap spēli

Opcija grep ’–C ir līdzīga, taču tā vietā, lai drukātu līnijas, kas ir pirms vai pēc virknes, tās izdrukā līnijas jebkurā virzienā:

# ifconfig | grep –C 2 lo

6. Saskaitīt maču skaitu

Līdzīgi kā ar grep virknes pievienošanu vārdu skaitīšanai (wc programma), arī grep iebūvētā opcija jums var paveikt to pašu:

# ifconfig | grep –c inet6

7. Meklēt failus pēc noteiktas virknes

Grep opcija –n ir ļoti noderīga, atkļūdojot failus kompilēšanas kļūdu laikā. Tas parāda rindas numuru norādītās meklēšanas virknes failā:

# grep –n “main” setup..py

8. Meklējiet virkni rekursīvi visos direktorijos

Ja vēlaties meklēt virkni pašreizējā direktorijā kopā ar visām apakšdirektorijām, varat norādīt opciju –r, lai meklētu rekursīvi:

# grep –r “function” *

9. Meklē visu modeli

Pārlaižot opciju –w, tiek meklēts viss virknē esošais raksts. Piemēram, izmantojot:

# ifconfig | grep –w “RUNNING”

Izdrukās līniju ar rakstu pēdiņās. No otras puses, ja jūs mēģināt:

# ifconfig | grep –w “RUN”

Nekas netiks atgriezts, jo mēs meklējam nevis modeli, bet visu vārdu.

10. Meklējiet virkni Gzip failos

Daži pieminēšanas veidi ir grep atvasinājumi. Pirmais ir zgrep, kas līdzīgi zcat ir paredzēts lietošanai gzip failos. Tam ir tādas pašas iespējas kā grep un tas tiek izmantots tāpat:

# zgrep –i error /var/log/syslog.2.gz

11. Saskaņojiet regulārās izteiksmes failos

Egrep ir vēl viens atvasinājums, kas apzīmē paplašinātu globālo regulāro izteiksmi. Tas atpazīst papildu izteiksmes meta rakstzīmes, piemēram, pie +? | un().

egrep ir ļoti noderīgs, lai meklētu avota failus un citus koda fragmentus, ja rodas vajadzība. To var izsaukt no regulārā grep, norādot opciju –E.

# grep –E

12. Meklējiet fiksēta modeļa virkni

Fgrep failā vai failu sarakstā meklē fiksētu rakstu virkni. Tas ir tas pats, kas grep – F. Fgrep izplatīts veids ir nodot tam modeļu failu:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

Tas ir tikai sākumpunkts ar grep, taču, kā jūs, iespējams, spējat redzēt, tas ir nenovērtējams dažādiem mērķiem. Papildus vienkāršajām vienas rindas komandām, kuras esam ieviesuši, grep vispirms var izmantot, lai rakstītu jaudīgus Cron darbus un izturīgus čaulas skriptus.

Esiet radošs, eksperimentējiet ar opcijām vīrieša lapā un izdomājiet grep izteicienus, kas kalpo jūsu pašu mērķiem!