grep

30 näpunäidet

30 näpunäidet
Leiate sügava Unixi ja Unixi-laadsete operatsioonisüsteemide loomaajust sügaval. See on mustrite sobitamiseks kasutatav põhiprogramm ja see kirjutati 70ndatel koos ülejäänud UNIX-i tööriistaga, mida me teame ja armastame (või vihkame).

Kuigi ametlike keelte ja regulaaravaldiste tundmaõppimine on põnev teema. Grepi õppimisel on palju rohkem kui regexes. Sellega alustamiseks ning grepi ilu ja elegantsi nägemiseks peate kõigepealt nägema mõnda reaalses maailmas toodud näidet.

Näited, mis on käepärased ja muudavad teie elu veidi lihtsamaks. Siin on 30 sellist grep-i tavalist kasutamist ja valikut.

1. ps aux | grep

PS aux loetleb kõik protsessid ja nendega seotud pidid. Kuid sageli on see loetelu inimese kontrollimiseks liiga pikk. Väljundi grep-käsu sisestamisel saate loetleda protsessid, mis töötavad väga konkreetset rakendust silmas pidades. Näiteks võiks olla sshd või nginx või httpd.

# ps aux | grep sshd
juur 400 0.0 0.2 69944 5624 ?       Ss 17:47 0:00 / usr / sbin / sshd -D
juur 1076 0.2 0.3 95204 6816 ?       Ss 18:29 0:00 sshd: juur @ pts / 0
juur 1093 0.0 0.0 12784 932 p / 0 S + 18:29 0:00 grep sshd

2. Teie IP-aadresside hüüdmine

Enamikus operatsioonisüsteemides saate loetleda kõik oma võrguliidesed ja sellele liidesele määratud IP-koodi, kasutades kas käsku ifconfig või ip addr. Mõlemad käsud väljastavad palju lisateavet. Kuid kui soovite printida ainult IP-aadressi (näiteks shelliskriptide jaoks), võite kasutada alltoodud käsku:

$ ip addr | grep inet | awk 'print $ 2; '
$ ip addr | grep -w inet | awk 'print $ 2; '#Joonte jaoks, millel on lihtsalt inet, mitte inet6 (IPv6)

Käsk ip addr saab kõik üksikasjad (sealhulgas IP-aadressid), seejärel suunatakse see teisele käsule grep inet, mis väljastab ainult read, milles on inet. Seejärel sisestatakse see awk-i printimiseks lause, mis prindib iga rea ​​teise sõna (lihtsustatult).

P.S: Saate seda teha ka ilma grepita, kui teate, et awk on hästi teada.

3. Vaadates ebaõnnestunud SSH katseid

Kui teil on Interneti-server ja avaliku IP-ga, pommitatakse seda pidevalt SSH-katsetega ja kui lubate kasutajatel paroolipõhise SSH-juurdepääsu (poliitika, mida ma ei soovitaks), näete kõiki selliseid ebaõnnestunud katseid järgmine käsk grep:

# kass / var / log / autor.logi grep "ebaõnnestus"
Näidis välja pandud
5. detsember 16:20:03 debian sshd [509]: ebaõnnestus parooli juur alates 192.168.0.100 port 52374 ssh2
5. detsember 16:20:07 debian sshd [509]: root'i parool ebaõnnestus 192-st.168.0.100 port 52374 ssh2
5. detsember 16:20:11 debian sshd [509]: Ebaõnnestunud parool juurule alates 192.168.0.100 port 52374 ssh2

4. Grepi toomine Uniqi

Mõnikord väljastab grep palju teavet. Ülaltoodud näites võib olla proovinud teie süsteemi siseneda üks IP. Enamikul juhtudel on selliseid rikkuvaid IP-sid vaid käputäis, mida peate kordumatult tuvastama ja musta nimekirja lisama.

# kass / var / log / autor.logi grep "Fail" | uniq -f 3

Käsk uniq peaks printima ainult unikaalsed read. Uniq -f 3 jätab kolm esimest välja vahele (et mitte vaadata kordumatuid ajatemplid) ja hakkab seejärel unikaalseid ridu otsima.

5. Grepping veateadete jaoks

Grepi kasutamine juurdepääsu ja tõrke logide jaoks ei piirdu ainult SSH-ga. Veebiserverid (nagu Nginx) logivad vead ja pääsulogid üsna hoolikalt. Kui seadistate jälgimisskriptid, mis saadavad teile märguandeid, kui grep "404" tagastab uue väärtuse. See võib olla üsna kasulik.

# grep -w "404" / var / www / nginx / juurdepääs.logi
192.168.0.100 - - [06 / dets / 2018: 02: 20: 29 +0530] "GET / favicon.ico HTTP / 1.1 "404 200
"http: // 192.168.0.102 / "" Mozilla / 5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit / 537.36 (KHTML, nagu Gecko) Chrome / 70.0.3538.110 Safari / 537.36 "
192.168.0.101 - - [06 / dets / 2018: 02: 45: 16 +0530] "GET / favicon.ico HTTP / 1.1 "404 143
"http: // 192.168.0.102 / "" Mozilla / 5.0 (iPad; CPU OS 12_1 nagu Mac OS X)
AppleWebKit / 605.1.15 (KHTML, nagu Gecko) Versioon / 12.0 Mobiil / 15E148 Safari / 604.1 "

Regex ei pruugi olla „404”, kuid mõni muu regex filtreerimine ainult mobiiliklientide või ainult veebisaiti vaatavate Apple'i seadmete jaoks. See võimaldab teil oma rakenduse toimimisest põhjalikumalt aru saada.

6. Pakettide loetelu

Debianipõhiste süsteemide puhul loetleb dpkg -l kõik teie süsteemi installitud paketid. Konkreetsesse rakendusse kuuluvate pakettide otsimiseks saate selle sisestada käsku grep. Näiteks:

# dpkg -l | grep "vim"

7. grep -v failinimed

Et loetleda kõik read, mis ära tee sisaldavad antud mustrit, kasutage lippu -v. Põhimõtteliselt on see vastupidine tavalisele grep-käsule.

8. grep -l

See loetleb kõik failid, mis sisaldavad vähemalt ühte kaasasoleva mustri esinemist. See on kasulik, kui otsite mustrit kataloogis, kus on mitu faili. See prindib ainult faili nime, mitte konkreetse mustriga rea.

9. Ühesõnaline variant -w

$ grep -w failinimed

-W lipp käsib grepil etteantud mustrit otsida tervikuna, mitte ainult rea alamstringina. Näiteks varem haarasime IP-aadressi ja mustri järele sisse trükkis read mõlemaga sisse ja inet6 loetledes nii IPv4 kui ka IPv6 aadressid. Aga kui me kasutaksime -w lipu ainult ridu, millega sisse kuna sõna, millele eelneb ja järgneb tühik, on sobiv vaste.

10. Laiendatud regulaaravaldis

Sageli leiate, et Grepi omapärased regulaaravaldised on natuke piiravad. Enamikust skriptidest ja juhistest leiate lipu -E kasutamise ja see võimaldab teil sisestada mustri laiendatud režiimi.

Siin on käsud grep ja grep -E, et otsida sõnu Superman ja Spiderman.

$ grep "\ (Super | Ämblik \" mees ""tekst
$ grep -E ""(Super | Ämblik) mees"" tekst

Nagu näete, on laiendatud versiooni palju lihtsam lugeda.

11. Grep oma konteinerite järele

Kui teie hostil töötab suur konteinerite klaster, saate neid haarata pildi nime, oleku, nende avaldatavate portide ja paljude muude atribuutide järgi. Näiteks,

$ dokkija ps | grep [imageName]

12. Grep oma kaunade järele

Sel ajal, kui oleme konteinerite teemal. Kubernetes kipub antud kasutuselevõtu ajal sageli käivitama mitu kaarti. Kuigi igal podil on ainulaadne nimi, algavad nad antud nimeruumis tavaliselt juurutamise nimega. Saame sellest kinni haarata ja loetleda kõik antud juurutusega seotud kaunad.

$ kubectl saada kaunad | grep

13. Grep suurandmete jaoks

Sageli hõlmab nn ""suurandmete"" analüüs sageli andmekogumis mustrite lihtsat otsimist, sortimist ja loendamist. Madalad UNIX-i utiliidid nagu grep, uniq, wc on selles eriti head. See blogipostitus näitab kena näidet ülesandest, mis on tehtud vaid sekunditega, kasutades grepi ja muid Unixi utiliite, samal ajal kui Hadoopil kulus peaaegu pool tundi.

Näiteks see andmekogum on üle 1.7 GB suurune. See sisaldab teavet paljude malevõistluste kohta, sealhulgas tehtud käigud, kes võitsid jne. Oleme huvitatud lihtsalt tulemustest, nii et käivitame järgmise käsu:

$ grep ""Tulemus"" miljonibaas-2.22.pgn | sorteeri | uniq -c
221 [Tulemus ""*""]
653728 [tulemus ""0-1""]
852305 [tulemus ""1-0""]
690934 [tulemus ""1 / 2-1 / 2""]

4-aastasel 2-südamikulisel / 4-niitilisel protsessoril kulus selleks umbes 15 sekundit. Nii et järgmine kord, kui lahendate suurandmete probleemi. Mõelge, kas saate selle asemel kasutada grepi.

14. grep -värv = auto

See valik võimaldab grepil esile tõsta mustrit selle joone sees, kust see leiti.

15. grep -i

Grepi mustri sobitamine on oma olemuselt tõstutundlik. Kuid kui see ei huvita, muudab lipu -i kasutamine grep-kirja väiketundlikuks.

16. grep -n

Lipp -n näitab rea numbreid, nii et te ei pea muretsema hiljem sama rea ​​leidmise eest.

17. git grep

Versioonijuhtimissüsteemil Git on sisseehitatud käsk grep, mis töötab üsna sarnaselt teie tavalise grepiga. Kuid seda saab kasutada igast pühendunud puust mustrite otsimiseks, kasutades tüüpilisi torusid, kasutades kohalikku git CLI-d. Näiteks kui olete oma repo põhiharus, saate kogu repo kaudu edasi liikuda, kasutades järgmist:

(kapten) $ git grep

18. grep -o

Märgist -o on tõesti abi, kui proovite regexi siluda. See prindib kogu rea asemel ainult rea sobiva osa. Nii et juhul, kui teil on tarnitud mustri jaoks liiga palju soovimatuid jooni, ei saa te aru, miks see juhtub. Rippuva alamstringi ja regexi põhjuse printimiseks võite sealt lipu -o abil tagurpidi printida.

19. grep -x

Lipp -x trükiks joone ja ainult siis, kui kogu rida vastab teie lisatud regexile. See on mõnevõrra sarnane lipuga -w, mis printis rea, kui ja ainult terve sõna sobis kaasasoleva regexiga.

20. grep -T

Shelli skriptide logide ja väljundite käsitlemisel kohtate väljundi erinevate veergude eristamiseks enam kui tõenäoliselt kõvasid vahelehti. -T lipp joondab need vahelehed kenasti, nii et veerud on kenasti paigutatud, muutes väljundi inimesele loetavaks.

21. grep -q

See pärsib väljundi ja käivitab vaikselt käsu grep. Väga kasulik teksti asendamisel või deepskriptis grepi käivitamisel.

22. grep -P

Inimesed, kes on harjunud perl-i regulaaravaldise süntaksiga, saavad täpselt selle kasutamiseks kasutada lipu -P. Te ei pea õppima regulaarset põhiväljendit, mida grep vaikimisi kasutab.

23. grep-D [TEGEVUS]

Unixis saab peaaegu kõike käsitleda failina. Järelikult saab greppi sisestada mis tahes seadme, pistikupesa või FIFO andmevoo. Võite kasutada -D lippu, millele järgneb ACTION (vaiketoiming on LOE). Mõned muud võimalused on JÄTKAMINE konkreetsete seadmete vaikseks vahelejätmiseks ja KORDUMINE, et rekursiivselt kataloogidest ja sümbollinkidest läbi minna.

24. Kordamine

Kui otsite antud mustrit, mis on tuntud lihtsama mustri kordus, siis kasutage korduste arvu märkimiseks lokkis traksidega

$ grep -E ""[0-9] 10""

Sellega prinditakse read, mis sisaldavad vähemalt 10 numbrit pikkusi stringe.

25. Korduvad stenokardid

Mõned erimärgid on reserveeritud teatud tüüpi mustri kordamiseks. Võite neid kasutada lokkis trakside asemel, kui need sobivad teie vajadustega.

? : Küsimärgile eelnev muster peaks vastama nullile või ühele korrale.

*: Tärnile eelnev muster peaks ühtima nulliga või rohkem.

+ : Plussile eelnev muster peaks ühtima mitu korda.

25. Baitide nihked

Kui soovite teada nende ridade baitide nihet, kus leidub vastav avaldis, saate nihke -b abil printida ka nihked. Lihtsalt joone vastava osa nihke printimiseks võite kasutada lipu -b lipuga -o.

$ grep -b -o [faili nimi]

Nihe tähendab lihtsalt seda, kui mitu baiti faili algusest algab sobiv string.

26. egrep, fgrep ja rgerp

Sageli näete egrepi esilekutsumist, et kasutada laiendatud regulaaravaldise süntaksit, mida me varem käsitlesime. See on aga aegunud süntaks ja soovitatav on selle kasutamist vältida. Kasutage selle asemel grep -E. Sarnaselt kasutage fgrep-i asemel grep -F ja rgrep-i asemel grep -r.

27. grep -z

Mõnikord ei ole grepi sisend rida, mis lõpevad uue rea tähemärgiga. Näiteks kui töötlete failinimede loendit, võivad need pärineda erinevatest allikatest. -Z lipp käsib grepil NULL-tähemärki käsitleda kui rea lõppu. See võimaldab teil käsitleda sissetulevat voogu mis tahes tavalise tekstifailina.

28. grep -a [faili nimi]

-Lipp käsib grepil tarnitud faili käsitleda nii, nagu oleks see tavaline tekst. Fail võib olla binaarne, kuid grep käsitleb sees olevat sisu justkui tekstina.

29. grep -U [faili nimi]

-U lipp käsib grepil tarnitud faile käsitleda nii, nagu oleksid need binaarfailid ja mitte tekst. Vaikimisi arvab grep failitüübi, vaadates paari esimest baiti. Selle lipu kasutamine tühistab oletatava töö.

30. grep -m NUM

Suurte failide korral võib avaldise järele haarata igavesti. Kuid kui soovite kontrollida ainult esimest NUM vastete arvu, võite selle saavutamiseks kasutada -m lippu. See on kiirem ja väljund on sageli ka hallatav.

Järeldus

Suur osa sysadmini igapäevatööst hõlmab suurte tekstivahemike sõelumist. Need võivad olla turbelogid, veebi- või meiliserveri logid, kasutaja tegevus või isegi suur man-lehtede tekst. Grep annab teile selle kasutusjuhtumite käsitlemisel selle natuke suurema paindlikkuse.

Loodetavasti on ülaltoodud mõned näited ja kasutusjuhtumid aidanud teil seda elavat tarkvara fossiili paremini mõista.

"
Juhtige ja hallake hiire liikumist mitme kuvari vahel Windows 10-s
Dual Display Mouse Manager võimaldab teil kontrollida ja konfigureerida hiire liikumist mitme monitori vahel, aeglustades selle liikumist piiri läheda...
WinMouse võimaldab teil kohandada ja parandada hiirekursori liikumist Windowsi arvutis
Kui soovite oma hiirekursori vaikefunktsioone paremaks muuta, kasutage vabavara WinMouse. See lisab rohkem funktsioone, mis aitavad teil alandlikust h...
Hiire vasakklõps nupp ei tööta Windows 10-s
Kui kasutate oma sülearvuti või lauaarvutiga spetsiaalset hiirt, kuid hiire vasakklõps nupp ei tööta mingil põhjusel operatsioonisüsteemis Windows 10/...