NAME

App::Greple::tee - eşleşen metni harici komut sonucu ile değiştiren modül

SYNOPSIS

greple -Mtee command -- ...

VERSION

Version 1.02

DESCRIPTION

Greple'ın -Mtee modülü, eşleşen metin parçasını verilen filtre komutuna gönderir ve bunları komut sonucuyla değiştirir. Bu fikir teip adlı komuttan türetilmiştir. Kısmi verileri harici filtre komutuna atlamak gibidir.

Filtre komutu modül bildirimini (-Mtee) takip eder ve iki tire (--) ile sonlanır. Örneğin, bir sonraki komut verideki eşleşen kelime için a-z A-Z argümanları ile tr komutunu çağırır.

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

Yukarıdaki komut eşleşen tüm kelimeleri küçük harften büyük harfe dönüştürür. Aslında bu örneğin kendisi çok kullanışlı değildir çünkü greple aynı şeyi --cm seçeneği ile daha etkili bir şekilde yapabilir.

Varsayılan olarak, komut tek bir süreç olarak yürütülür ve eşleşen tüm veriler sürece karışık olarak gönderilir. Eşleşen metin satırsonu ile bitmiyorsa, gönderilmeden önce eklenir ve alındıktan sonra kaldırılır. Girdi ve çıktı verileri satır satır eşleştirilir, bu nedenle girdi ve çıktı satırlarının sayısı aynı olmalıdır.

--discrete seçeneği kullanıldığında, eşleşen her metin alanı için ayrı bir komut çağrılır. Farkı aşağıdaki komutlarla anlayabilirsiniz.

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

--discrete seçeneği kullanıldığında giriş ve çıkış verilerinin satırları aynı olmak zorunda değildir.

OPTIONS

--discrete

Eşleşen her parça için ayrı ayrı yeni komut çağırın.

--bulkmode

<--ayrık> seçeneği ile her komut isteğe bağlı olarak yürütülür. Bu durumda <--bulkmode> option causes all conversions to be performed at once.

--crmode

Bu seçenek, her bloğun ortasındaki tüm satırsonu karakterlerini satırbaşı karakterleriyle değiştirir. Komutun çalıştırılması sonucunda bulunan satır başları yeni satır karakterine geri döndürülür. Böylece, birden fazla satırdan oluşan bloklar --ayrık seçeneği kullanılmadan toplu olarak işlenebilir.

--fillup

Bir dizi boş olmayan satırı filtre komutuna geçirmeden önce tek bir satırda birleştirin. Geniş karakterler arasındaki yeni satır karakterleri silinir ve diğer yeni satır karakterleri boşluklarla değiştirilir.

--squeeze

İki veya daha fazla ardışık satırsonu karakterini tek bir karakterde birleştirir.

-ML --offload command

teip(1)'in --offload seçeneği farklı bir modül olan App::Greple::L (-ML) içinde uygulanmaktadır.

greple -Mtee cat -n -- -ML --offload 'seq 10 20'

-ML modülünü sadece çift sayılı satırları işlemek için aşağıdaki gibi de kullanabilirsiniz.

greple -Mtee cat -n -- -ML 2::2

LEGACIES

--stretch (-S) seçeneği greple modülünde uygulandığı için --blocks seçeneğine artık gerek yoktur. Basitçe aşağıdakileri uygulayabilirsiniz.

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

Gelecekte kullanımdan kaldırılabileceği için --blocks seçeneğinin kullanılması önerilmez.

--blocks

Normalde, belirtilen arama deseniyle eşleşen alan harici komuta gönderilir. Bu seçenek belirtilirse, eşleşen alan değil, onu içeren tüm blok işlenecektir.

Örneğin, foo kalıbını içeren satırları harici komuta göndermek için, tüm satırla eşleşen kalıbı belirtmeniz gerekir:

greple -Mtee cat -n -- '^.*foo.*\n' --all

Ancak --blocks seçeneği ile aşağıdaki kadar basit bir şekilde yapılabilir:

greple -Mtee cat -n -- foo --blocks

--blocks seçeneği ile bu modül daha çok teip(1)'in -g seçeneği gibi davranır. Aksi takdirde, davranış -o seçeneği ile teip(1)'e benzer.

--blocks seçeneğini --all seçeneği ile birlikte kullanmayın, çünkü blok tüm veri olacaktır.

WHY DO NOT USE TEIP

Öncelikle, teip komutu ile yapabildiğiniz her şeyi kullanın. Mükemmel bir araçtır ve greple'den çok daha hızlıdır.

greple belge dosyalarını işlemek için tasarlandığından, eşleşme alanı kontrolleri gibi buna uygun birçok özelliğe sahiptir. Bu özelliklerden yararlanmak için greple kullanmaya değer olabilir.

Ayrıca, teip birden fazla veri satırını tek bir birim olarak işleyemezken, greple birden fazla satırdan oluşan bir veri yığını üzerinde ayrı komutlar çalıştırabilir.

EXAMPLE

Sonraki komut, Perl modül dosyasında bulunan perlpod(1) tarzı belge içindeki metin bloklarını bulacaktır.

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

Yukarıdaki komutu deepl komutunu çağıran -Mtee modülü ile birlikte çalıştırarak DeepL servisi ile çevirebilirsiniz:

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

Yine de özel modül App::Greple::xlate::deepl bu amaç için daha etkilidir. Aslında, tee modülünün uygulama ipucu xlate modülünden gelmiştir.

EXAMPLE 2

Sonraki komut LICENSE belgesinde bazı girintili kısımlar bulacaktır.

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.

Bu kısmı tee modülünü ansifold komutu ile kullanarak yeniden biçimlendirebilirsiniz:

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.

Ayrık seçeneği birden fazla işlem başlatır, bu nedenle işlemin yürütülmesi daha uzun sürer. Bu yüzden NL yerine CR karakterini kullanarak tek satır üreten ansifold ile --separate '\r' seçeneğini kullanabilirsiniz.

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

Daha sonra CR karakterini tr(1) komutu veya başka bir komutla NL'ye dönüştürün.

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

EXAMPLE 3

Başlık olmayan satırlardaki dizeler için grep yapmak istediğiniz bir durumu düşünün. Örneğin, docker image ls komutundan Docker görüntü adlarını aramak, ancak başlık satırını bırakmak isteyebilirsiniz. Bunu aşağıdaki komutla yapabilirsiniz.

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

-ML 2: seçeneği sondan ikinci satırları alır ve bunları grep perl komutuna gönderir. Girdi ve çıktı satırlarının sayısı değiştiği için --discrete seçeneği gereklidir, ancak komut yalnızca bir kez çalıştırıldığı için performans açısından bir dezavantajı yoktur.

Aynı şeyi teip komutuyla yapmaya çalışırsanız, teip -l 2- -- grep hata verecektir çünkü çıktı satırlarının sayısı girdi satırlarının sayısından azdır. Ancak elde edilen sonuçta bir sorun yoktur.

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

--fillup seçeneği Korece metni birleştirirken Hangul karakterleri arasındaki boşlukları kaldıracaktır.

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.