NAME

App::Greple::tee - modul de înlocuire a textului cu rezultatul unei comenzi externe

SYNOPSIS

greple -Mtee command -- ...

VERSION

Version 1.02

DESCRIPTION

Modulul -Mtee al lui Greple trimite partea de text potrivit la comanda de filtrare dată și le înlocuiește cu rezultatul comenzii. Ideea este derivată din comanda numită teip. Este ca și cum ar ocoli datele parțiale către comanda de filtrare externă.

Comanda de filtrare urmează după declarația modulului (-Mtee) și se termină prin două liniuțe (--). De exemplu, următoarea comandă apelează comanda tr comanda cu argumente a-z A-Z pentru cuvântul potrivit din date.

greple -Mtee tr a-z A-Z -- '\w+' ...

Comanda de mai sus convertește toate cuvintele potrivite din minuscule în majuscule. De fapt, acest exemplu în sine nu este atât de util, deoarece greple poate face același lucru mai eficient cu opțiunea --cm.

În mod implicit, comanda este executată ca un singur proces, iar toate datele corespunzătoare sunt trimise la proces amestecate împreună. În cazul în care textul potrivit nu se termină cu newline, acesta este adăugat înainte de trimitere și eliminat după primire. Datele de intrare și de ieșire sunt mapate linie cu linie, astfel încât numărul de linii de intrare și de ieșire trebuie să fie identic.

Utilizând opțiunea --discret, comanda individuală este apelată pentru fiecare zonă de text potrivit. Puteți face diferența prin următoarele comenzi.

greple -Mtee cat -n -- copyright LICENSE
greple -Mtee cat -n -- copyright LICENSE --discrete

Liniile de date de intrare și de ieșire nu trebuie să fie identice atunci când se utilizează opțiunea --discrete.

OPTIONS

LEGACIES

Opțiunea --blocks nu mai este necesară acum că opțiunea --stretch (-S) a fost implementată în greple. Puteți efectua pur și simplu următoarele.

greple -Mtee cat -n -- --all -SE foo

Nu se recomandă utilizarea opțiunii --blocks, deoarece aceasta poate fi depreciată în viitor.

WHY DO NOT USE TEIP

În primul rând, ori de câte ori puteți face acest lucru cu comanda teip, utilizați-o. Este un instrument excelent și mult mai rapid decât greple.

Deoarece greple este concepută pentru a procesa fișiere document, are multe caracteristici care îi sunt adecvate, cum ar fi controalele zonei de potrivire. Ar putea merita să utilizați greple pentru a profita de aceste caracteristici.

De asemenea, teip nu poate trata mai multe linii de date ca o singură unitate, în timp ce greple poate executa comenzi individuale pe un fragment de date format din mai multe linii.

EXAMPLE

Următoarea comandă va găsi blocuri de text în interiorul documentului de stil perlpod(1) inclus în fișierul modul Perl.

greple --inside '^=(?s:.*?)(^=cut|\z)' --re '^([\w\pP].+\n)+' tee.pm

Puteți să le traduceți prin serviciul DeepL executând comanda de mai sus convinsă cu modulul -Mtee care apelează comanda deepl astfel:

greple -Mtee deepl text --to JA - -- --fillup ...

Totuși, modulul dedicat App::Greple::xlate::deepl este mai eficient în acest scop. De fapt, sugestia de implementare a modulului tee a venit de la modulul xlate.

EXAMPLE 2

Următoarea comandă va găsi o parte indentată în documentul LICENȚĂ.

greple --re '^[ ]{2}[a-z][)] .+\n([ ]{5}.+\n)*' -C LICENSE

  a) distribute a Standard Version of the executables and library files,
     together with instructions (in the manual page or equivalent) on where to
     get the Standard Version.

  b) accompany the distribution with the machine-readable source of the Package
     with your modifications.

Puteți reformata această parte utilizând modulul tee cu comanda ansifold:

greple -Mtee ansifold -rsw40 --prefix '     ' -- --discrete --re ...

  a) distribute a Standard Version of
     the executables and library files,
     together with instructions (in the
     manual page or equivalent) on where
     to get the Standard Version.

  b) accompany the distribution with the
     machine-readable source of the
     Package with your modifications.

Opțiunea --discrete va porni mai multe procese, astfel încât procesul va dura mai mult timp pentru a se executa. Astfel, puteți utiliza opțiunea --separate '\r' cu ansifold care produce o singură linie folosind caracterul CR în loc de NL.

greple -Mtee ansifold -rsw40 --prefix '     ' --separate '\r' --

Apoi, convertiți caracterul CR în NL prin comanda tr(1) sau alta.

... | tr '\r' '\n'

EXAMPLE 3

Luați în considerare o situație în care doriți să căutați prin grep șiruri de caractere din liniile fără antet. De exemplu, este posibil să doriți să căutați numele imaginilor Docker din comanda docker image ls, dar să lăsați linia de antet. Puteți face acest lucru prin următoarea comandă.

greple -Mtee grep perl -- -ML 2: --discrete --all

Opțiunea -ML 2: recuperează penultimele linii și le trimite către comanda grep perl. Opțiunea --discrete este necesară deoarece numărul de linii de intrare și de ieșire se modifică, dar deoarece comanda este executată o singură dată, nu există niciun dezavantaj de performanță.

Dacă încercați să faceți același lucru cu comanda teip, teip -l 2- -- grep va da o eroare deoarece numărul de linii de ieșire este mai mic decât numărul de linii de intrare. Cu toate acestea, nu există nicio problemă cu rezultatul obținut.

INSTALL

CPANMINUS

$ cpanm App::Greple::tee

SEE ALSO

App::Greple::tee, https://github.com/kaz-utashiro/App-Greple-tee

https://github.com/greymd/teip

App::Greple, https://github.com/kaz-utashiro/greple

https://github.com/tecolicom/Greple

App::Greple::xlate

BUGS

Opțiunea --fillup va elimina spațiile dintre caracterele Hangul la concatenarea textului coreean.

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright © 2023-2025 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.