6 bestu CLI tólin til að leita að venjulegum textagögnum með venjulegum tjáningum


Þessi handbók fer yfir nokkur af bestu skipanalínuverkfærunum sem eru notuð til að leita að samsvarandi strengjum eða mynstrum í textaskrám. Þessi verkfæri eru venjulega notuð samhliða reglulegum tjáningum - stytt sem REGEX - sem eru einstakir strengir til að lýsa leitarmynstri.

Við skulum kafa inn, án þess að hafa mikið um það.

1. Grep Command

Í fyrsta sæti er grep tólið - er skammstöfun fyrir Global Regular Expression Print, er öflugt skipanalínuverkfæri sem kemur sér vel þegar leitað er að ákveðnum streng eða mynstri í skrá.

Grep er sjálfgefið með nútíma Linux dreifingu og gefur þér sveigjanleika til að skila ýmsum leitarniðurstöðum. Með grep geturðu framkvæmt mikið úrval af aðgerðum eins og:

  • Leitaðu að strengjum eða samsvarandi mynstrum í skrá.
  • Leitaðu að strengjum eða samsvarandi mynstrum í Gzipped skrám.
  • Teldu fjölda samsvarandi strengja.
  • Prentaðu línunúmerin sem innihalda strenginn eða mynstrið.
  • Leitaðu endurtekið að strengnum í möppum.
  • Framkvæma öfuga leit (þ.e. birta niðurstöður strengja sem passa ekki við leitarskilyrðin).
  • Hunsa hástafanæmi þegar leitað er að strengjum.

Setningafræðin fyrir notkun grep skipunarinnar er frekar einföld:

$ grep pattern FILE

Til dæmis, til að leita að strengnum 'Linux' í skrá, segðu halló.txt á meðan þú hunsar hástafanæmi skaltu keyra skipunina:

$ grep -i Linux hello.txt

Til að fá fleiri valkosti sem þú getur notað með grep, lestu einfaldlega greinina okkar sem dæmi um fleiri háþróaða grep stjórnunardæmi.

2. sed Skipun

meðhöndlun texta í textaskrá. Sed leitar, síar og skiptir út strengjum í tiltekinni skrá á ógagnvirkan hátt.

Sjálfgefið er að sed skipun prentar úttakið í STDOUT (Standard Out), sem gefur til kynna að niðurstaðan af framkvæmdinni sé prentuð á flugstöðinni í stað þess að vera vistuð í skrá.

Sed skipun er kölluð á eftirfarandi hátt:

$ sed -OPTIONS command [ file to be edited ]

Til dæmis, til að skipta út öllum tilfellum af 'Unix' fyrir 'Linux', kallarðu á skipunina:

$ sed 's/Unix/Linux' hello.txt

Ef þú vilt beina úttakinu í stað þess að prenta það á flugstöðina skaltu nota tilvísunarmerkið ( > ) eins og sýnt er.

$ sed 's/Unix/Linux' hello.txt > output.txt

Úttak skipunarinnar er vistað í output.txt skránni í stað þess að vera prentað á skjáinn.

Til að skoða fleiri valkosti sem hægt er að nota skaltu enn og aftur skoða mannasíðurnar.

$ man sed

3. Ack Command

Ack er fljótlegt og flytjanlegt skipanalínuverkfæri skrifað í Perl. Ack er talinn vingjarnlegur í staðinn fyrir grep gagnsemi og framleiðsla skilar sér á sjónrænt aðlaðandi hátt.

Ack skipun leitar í skránni eða möppunni að línum sem innihalda samsvörun fyrir leitarskilyrðin. Það undirstrikar síðan samsvarandi streng í línunum.
Ack hefur getu til að greina skrár á grundvelli skráarendingar þeirra, og að vissu marki, innihaldi skránna.

Ack skipana setningafræði:

$ ack [options] PATTERN [FILE...]
$ ack -f [options] [DIRECTORY...]

Til dæmis, til að leita að leitarorðinu Linux skaltu keyra:

$ ack Linux hello.txt

Leitartólið er nokkuð snjallt og ef engin skrá eða mappa er útveguð af notandanum leitar það í núverandi möppu og undirmöppum að leitaarmynstrinu.

Í dæminu hér að neðan hefur engin skrá eða mappa verið gefin upp, en ack hefur sjálfkrafa fundið tiltæka skrá og leitað að samsvarandi mynstri sem gefið er upp.

$ ack Linux

Til að setja upp ack á vélinni þinni skaltu keyra skipunina:

$ sudo apt install ack-grep    [On Debian/Ubuntu]
$ sudo dnf install ack-grep    [On CentOS/RHEL]

4. Awk Command

Awk er fullbúið forskriftarmál og einnig textavinnslu- og gagnavinnsluverkfæri. Það leitar í skrám eða forritum sem innihalda leitaarmynstrið. Þegar strengurinn eða mynstrið finnst, grípur awk til aðgerða á samsvörun eða línu og prentar niðurstöðurnar á STDOUT.

AWK mynstrið er lokað á milli krullaðra axlabönda á meðan allt prógrammið er lokað innan gæsalappa.

Tökum einfaldasta dæmið. Gerum ráð fyrir að þú sért að prenta dagsetningu kerfisins eins og sýnt er:

$ date

Segjum að þú viljir aðeins prenta út fyrsta gildið, sem er vikudagur. Í því tilviki skaltu leiða úttakið í awk eins og sýnt er:

$ date | awk '{print $1}'

Til að sýna síðari gildi skaltu aðgreina þau með kommu eins og sýnt er:

$ date | awk '{print $1,$2}'

Skipunin hér að ofan sýnir vikudag og mánaðardag.

Til að fá fleiri valkosti sem þú getur notað með awk skaltu einfaldlega lesa awk skipana röðina okkar.

5. Silfurleitarmaður

Silfurleitarinn er þvert á vettvang og opinn kóða leitartæki svipað ack en með áherslu á hraða. Það gerir það auðvelt fyrir þig að leita að ákveðnum streng í skrám á sem skemmstum tíma:

Setningafræði:

$ ag OPTIONS search_pattern /path/to/file

Til dæmis, til að leita að strengnum 'Linux' í skrá hello.txt kallarðu á skipunina:

$ ag Linux hello.txt

Fyrir frekari valkosti, farðu á mannasíðurnar:

$ man ag

6. Ripgrep

Að lokum höfum við ripgrep skipanalínutólið. Ripgrep er tól á vettvangi til að leita að regex mynstri. Það er miklu hraðvirkara en öll fyrrnefndu leitartækin og leitar afturkvæmt í möppum að samsvarandi mynstrum. Hvað varðar hraða og afköst, þá sker ekkert annað tól sig úr en Ripgrep.

Sjálfgefið mun ripgrep sleppa tvíundarskrám/falnum skrám og möppum. Einnig skaltu hafa í huga að sjálfgefið leitar það ekki að skrám sem .gitignore/.ignore/.rgignore skrár hunsa.

Ripgrep gerir þér einnig kleift að leita að ákveðnum skráartegundum. Til dæmis, til að takmarka leit þína við Javascript skrár skaltu keyra:

$ rg -Tsj

Setningafræðin til að nota ripgrep er frekar auðveld:

$ rg [OPTIONS] PATTERN [PATH...]

Til dæmis. Til að leita að tilfellum af strengnum 'Linux' í skrám sem eru staðsettar í núverandi möppu skaltu keyra skipunina:

$ rg Linux

Til að setja upp ripgrep á vélinni þinni skaltu keyra eftirfarandi skipanir:

$ sudo apt install ripgrep      [On Debian/Ubuntu]
$ sudo pacman -S ripgrep        [On Arch Linux]
$ sudo zypper install ripgrep   [On OpenSuse]
$ sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Fyrir frekari valkosti, farðu á mannasíðurnar:

$ man rg

Þetta eru nokkur af mest notuðu skipanalínutólunum til að leita, sía og vinna með texta í Linux. Ef þú hefur önnur verkfæri sem þér finnst við hafa sleppt, láttu okkur vita í athugasemdahlutanum.