Kaip naudoti „Grep“ komandą „Linux“ [12 naudingų pavyzdžių]


Ar kada nors susidūrėte su užduotimi ieškoti konkrečios eilutės ar rašto faile, tačiau nežinote, nuo ko pradėti ieškoti? Na, štai grep komanda į pagalbą!

grep yra galinga failų šablonų paieškos priemonė, kuri pateikiama kiekviename Linux platinime. Jei dėl kokios nors priežasties jis neįdiegtas jūsų sistemoje, galite lengvai jį įdiegti naudodami paketų tvarkyklę, kaip parodyta.

sudo apt install grep         [On Debian, Ubuntu and Mint]
sudo yum install grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
sudo emerge -a sys-apps/grep  [On Gentoo Linux]
sudo apk add grep             [On Alpine Linux]
sudo pacman -S grep           [On Arch Linux]
sudo zypper install grep      [On OpenSUSE]    

Pastebėjau, kad lengviausias būdas sušlapti kojas naudojant grep komandą yra tiesiog pasinerti ir naudoti keletą realaus pasaulio pavyzdžių.

1. Ieškokite ir raskite failus sistemoje „Linux“.

Tarkime, kad ką tik įdiegėte naują naujojo Ubuntu kopiją savo kompiuteryje ir ketinate išbandyti Python scenarijų.

Naršėte žiniatinklį ieškodami mokymo programų, bet matote, kad naudojamos dvi skirtingos Python versijos ir nežinote, kurią Python versiją Ubuntu įdiegė diegimo programa, arba jei įdiegė kokius nors modulius.

Tiesiog paleiskite šią dpkg komandą su grep, kaip parodyta:

dpkg -l | grep -i python

Pirmiausia paleidome dpkg –l, kuri išvardija jūsų sistemoje įdiegtus *.deb paketus. Antra, mes nukreipėme tą išvestį į grep -i python, kuri tiesiog nurodo „eikite į grep ir išfiltruokite ir grąžinkite viską su „python“. “

Parinktis -i skirta nepaisyti didžiųjų ir mažųjų raidžių, nes grep skiriamos didžiosios ir mažosios raidės. Parinkties -i naudojimas yra geras įprotis įsitraukti, nebent, žinoma, bandote nustatyti tikslesnę paiešką.

2. Ieškokite ir filtruokite failus Linux sistemoje

grep taip pat gali būti naudojamas ieškant ir filtruojant atskiruose arba keliuose failuose. Paimkime šį scenarijų:

Turite problemų su savo Apache žiniatinklio serveriu ir susisiekėte su vienu iš daugelio nuostabių forumų tinkle, prašydami pagalbos.

Maloni siela, kuri jums atsako, paprašė paskelbti failo /etc/apache2/apache2.conf turinį. Ar jums, jums padedančiam vaikinui ir visiems skaitantiems nebūtų lengviau, jei galėtumėte pašalinti visas komentuojamas eilutes? Na, tu gali! Tiesiog paleiskite tai:

grep -v ^\# /etc/apache2/apache2.conf | grep .

Parinktis -v nurodo grep invertuoti išvestį, o tai reiškia, kad užuot spausdinę atitinkančias eilutes, darykite priešingai ir išspausdinkite visas eilutes, kurios neatitinka išraiškos, šiuo atveju # komentuojamos eilutės.

Atminkite, kad pabaigoje taip pat naudojome grep ., kad paslėptume visų tuščių eilučių išvestį. Tokiu būdu savo terminale matome tik konfigūracijos nustatymus.

3. Raskite visus .mp3 failus Linux sistemoje

grep gali būti labai naudingas filtruojant iš stdout. Pavyzdžiui, tarkime, kad turite visą aplanką, pilną įvairių formatų muzikos failų.

Norite rasti visus *.mp3 failus iš atlikėjo JayZ, bet nenorite permaišytų takelių. Naudodami rasti komandą su keliais grep vamzdeliais atliksite šiuos veiksmus:

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

Šiame pavyzdyje mes naudojame funkciją rasti, kad spausdintume visus failus su plėtiniu *.mp3, filtruodami jį į grep –i išspausdinkite ir išspausdinkite visus failus pavadinimu „JayZ“, tada kitą vamzdelį į grep –vi, kuris išfiltruoja ir nespausdina visų failų pavadinimų su eilute (bet kuriuo atveju) „remiksas“.

4. Rodyti eilučių skaičių prieš arba po paieškos eilutės

Dar kelios parinktys yra jungikliai -A ir -B, kurie rodo atitinkamą eilutę ir eilučių skaičių prieš arba po paieškos eilutės.

Nors man puslapyje pateikiamas išsamesnis paaiškinimas, man lengviausia atsiminti parinktis: -A=po ir -B=prieš:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP

5. Spausdina eilučių skaičių aplink atitiktį

Parinktis grep -C yra panaši, tačiau užuot spausdinusi eilutes, kurios yra prieš arba po eilutės, ji spausdina eilutes bet kuria kryptimi:

ifconfig | grep -C 2 lo

 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15314  bytes 1593769 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0

6. Suskaičiuokite atitikmenų skaičių

Panašiai kaip ir grep eilutės prijungimas prie žodžių skaičiaus (wc komanda), įtaisytoji grep parinktis gali atlikti tą patį:

ifconfig | grep -c inet6

7. Ieškokite failų pagal nurodytą eilutę sistemoje Linux

Parinktis –n, skirta grep, yra labai naudinga derinant failus kompiliavimo klaidų metu. Jis rodo eilutės numerį nurodytos paieškos eilutės faile:

grep -n "main" setup.py

8. Ieškokite eilutės rekursyviai visuose kataloguose

Jei norite ieškoti eilutės dabartiniame kataloge kartu su visuose pakatalogiuose, galite nurodyti –r parinktį, kad galėtumėte ieškoti rekursyviai:

grep -r “function” *

9. Ieškokite viso modelio

Perdavus parinktį -w grep, ieškoma viso šablono, esančio eilutėje. Pavyzdžiui, naudojant:

ifconfig | grep -w "RUNNING"

Išspausdins eilutę, kurioje yra raštas kabutėse. Kita vertus, jei bandysite:

ifconfig | grep -w "RUN"

Niekas nebus grąžintas, nes mes ieškome ne modelio, o viso žodžio.

10. Ieškokite eilutės Gzipped failuose

Verta paminėti grep darinius. Pirmasis yra zgrep, kuris, panašus į zcat, skirtas naudoti gzip failuose. Jam taikomos tos pačios parinktys kaip grep ir naudojamos taip pat:

zgrep -i error /var/log/syslog.2.gz

11. Suderinkite įprastus reiškinius failuose

Komanda egrep yra dar vienas išvestinis žodis, reiškiantis „Išplėstinė visuotinė reguliarioji išraiška“. Jis atpažįsta papildomus išraiškos meta-simbolius, tokius kaip ties +? | ir ().

egrep komanda yra labai naudinga ieškant šaltinio failų ir kitų kodo dalių, jei reikia. Jį galima iškviesti iš įprasto grep, nurodant parinktį -E.

grep -E

12. Ieškokite fiksuoto šablono eilutės

Komanda fgrep faile arba failų sąraše ieško fiksuotos šablono eilutės. Tai tas pats, kas grep -F. Įprastas būdas naudoti fgrep yra perduoti jam šablonų failą:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Tai tik atspirties taškas naudojant grep, bet, kaip tikriausiai matote, jis yra neįkainojamas įvairiems tikslams. Be paprastų vienos eilutės komandų, kurias įdiegėme, grep gali būti naudojamas rašant galingas cron užduotis ir patikimus apvalkalo scenarijus. pradėti.

Būkite kūrybingi, eksperimentuokite su parinktimis man puslapyje ir sugalvokite grep išraiškas, kurios tinka jūsų tikslams!