NAME

App::Greple::tee - modul untuk mengganti teks yang cocok dengan hasil perintah eksternal

SYNOPSIS

greple -Mtee command -- ...

VERSION

Version 1.02

DESCRIPTION

Modul -Mtee dari Greple mengirimkan bagian teks yang cocok dengan perintah filter yang diberikan, dan menggantinya dengan hasil perintah. Idenya berasal dari perintah yang disebut teip. Ini seperti melewatkan sebagian data ke perintah filter eksternal.

Perintah filter mengikuti deklarasi modul (-Mtee) dan diakhiri dengan dua tanda hubung (--). Sebagai contoh, perintah berikutnya memanggil perintah tr dengan argumen a-z A-Z untuk kata yang cocok dalam data.

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

Perintah di atas mengubah semua kata yang cocok dari huruf kecil menjadi huruf besar. Sebenarnya contoh ini sendiri tidak begitu berguna karena greple dapat melakukan hal yang sama secara lebih efektif dengan opsi --cm.

Secara default, perintah ini dijalankan sebagai satu proses, dan semua data yang cocok akan dikirim ke proses yang digabungkan. Jika teks yang dicocokkan tidak diakhiri dengan baris baru, maka teks tersebut akan ditambahkan sebelum dikirim dan dihapus setelah diterima. Data input dan output dipetakan baris demi baris, sehingga jumlah baris input dan output harus identik.

Dengan menggunakan opsi --discrete, perintah individual dipanggil untuk setiap area teks yang cocok. Anda dapat mengetahui perbedaannya dengan perintah berikut.

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

Baris data input dan output tidak harus identik ketika digunakan dengan opsi --discrete.

OPTIONS

--discrete

Memanggil perintah baru satu per satu untuk setiap bagian yang cocok.

--bulkmode

Dengan opsi <--discrete>, setiap perintah dieksekusi sesuai permintaan. Opsi <--bulkmode> option causes all conversions to be performed at once.

--crmode

Opsi ini mengganti semua karakter baris baru di tengah setiap blok dengan karakter carriage return. Carriage return yang terdapat dalam hasil eksekusi perintah dikembalikan ke karakter baris baru. Dengan demikian, blok yang terdiri dari beberapa baris dapat diproses secara batch tanpa menggunakan opsi --discrete.

--fillup

Gabungkan urutan baris yang tidak kosong menjadi satu baris sebelum meneruskannya ke perintah filter. Karakter baris baru di antara karakter lebar akan dihapus, dan karakter baris baru lainnya diganti dengan spasi.

--squeeze

Menggabungkan dua atau lebih karakter baris baru yang berurutan menjadi satu.

-ML --offload command

Opsi --offload dari teip(1) diimplementasikan di modul berbeda App::Greple::L (-ML).

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

Anda juga bisa menggunakan modul -ML untuk memproses baris bernomor genap seperti berikut ini.

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

LEGACIES

Opsi --blok tidak lagi diperlukan karena opsi --stretch (-S) telah diimplementasikan di greple. Anda cukup melakukan hal berikut.

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

Tidak disarankan untuk menggunakan --blok karena mungkin tidak digunakan lagi di masa mendatang.

--blocks

Biasanya, area yang cocok dengan pola pencarian yang ditentukan dikirim ke perintah eksternal. Jika opsi ini ditentukan, bukan area yang cocok tetapi seluruh blok yang berisi area tersebut yang akan diproses.

Misalnya, untuk mengirim baris yang berisi pola foo ke perintah eksternal, Anda perlu menentukan pola yang cocok untuk seluruh baris:

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

Namun dengan opsi --blok, hal ini dapat dilakukan dengan mudah sebagai berikut:

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

Dengan opsi --blok, modul ini berperilaku lebih mirip dengan opsi -g dari teip(1). Jika tidak, perilakunya mirip dengan teip(1) dengan opsi -o.

Jangan gunakan --blok dengan opsi --all, karena blok akan menjadi seluruh data.

WHY DO NOT USE TEIP

Pertama-tama, kapanpun Anda dapat melakukannya dengan perintah teip, gunakanlah. Ini adalah alat yang sangat baik dan jauh lebih cepat daripada greple.

Karena greple didesain untuk memproses file dokumen, maka ia memiliki banyak fitur yang sesuai untuk itu, seperti kontrol area pencocokan. Mungkin ada baiknya menggunakan greple untuk memanfaatkan fitur-fitur tersebut.

Selain itu, teip tidak dapat menangani beberapa baris data sebagai satu kesatuan, sedangkan greple dapat menjalankan perintah individual pada potongan data yang terdiri dari beberapa baris.

EXAMPLE

Perintah berikutnya akan menemukan blok teks di dalam dokumen gaya perlpod(1) yang disertakan dalam file modul Perl.

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

Anda dapat menerjemahkannya melalui layanan DeepL dengan menjalankan perintah di atas yang diyakinkan dengan modul -Mtee yang memanggil perintah deepl seperti ini:

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

Modul khusus App::Greple::xlate::deepl lebih efektif untuk tujuan ini. Sebenarnya, petunjuk implementasi dari modul tee berasal dari modul xlate.

EXAMPLE 2

Perintah selanjutnya akan menemukan beberapa bagian yang menjorok ke dalam dokumen LICENSE.

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.

Anda dapat memformat ulang bagian ini dengan menggunakan modul tee dengan perintah 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.

Opsi --discrete akan memulai beberapa proses, sehingga prosesnya akan memakan waktu lebih lama untuk dieksekusi. Jadi, Anda dapat menggunakan opsi --pisah '\r' dengan ansifold yang menghasilkan satu baris menggunakan karakter CR, bukan NL.

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

Kemudian ubah karakter CR menjadi NL setelahnya dengan perintah tr(1) atau yang lainnya.

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

EXAMPLE 3

Pertimbangkan situasi di mana Anda ingin mencari string dari baris non-header. Sebagai contoh, Anda mungkin ingin mencari nama citra Docker dari perintah docker image ls, tetapi meninggalkan baris header. Anda dapat melakukannya dengan perintah berikut.

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

Opsi -ML 2: mengambil baris kedua hingga terakhir dan mengirimkannya ke perintah grep perl. Opsi --discrete diperlukan karena jumlah baris dari input dan output berubah, tetapi karena perintah ini hanya dieksekusi satu kali, maka tidak ada kekurangan dalam hal performa.

Jika Anda mencoba melakukan hal yang sama dengan perintah teip, teip -l 2- - grep akan memberikan kesalahan karena jumlah baris output kurang dari jumlah baris input. Namun, tidak ada masalah dengan hasil yang diperoleh.

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

Opsi --fillup akan menghilangkan spasi di antara karakter Hangul saat menggabungkan teks bahasa Korea.

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.