Apakah ada perintah yang dapat digunakan untuk dengan mudah menyorot (dengan warna, teks tebal atau back- / foreground) terbalik string khusus di stdin sambil meneruskan seluruh string ke stdout? Saya sedang berpikir untuk membangunnya , tetapi saya lebih suka menggunakannya jika sudah ada. Beberapa fitur yang diinginkan:
- String highlight terpisah disorot berbeda, dengan cara otomatis. Misalnya, string pertama akan disorot dalam warna merah, yang kedua berwarna hijau, yang ketiga berwarna biru tanpa konfigurasi manual .
- Mendeteksi dukungan warna dan jatuh kembali ke tebal / terbalik / metode penyorotan lain di mana tersedia.
- Izinkan untuk mencocokkan ekspresi reguler dan string literal.
- Lebih disukai melakukan sesuatu yang pintar jika pertandingan tumpang tindih, seperti "foobar" dan "barbar".
- Tidak ada yang dimodifikasi antara stdin dan stdout kecuali untuk penambahan kode warna.
Jawaban:
Mungkin Generik Colouriser (grc) Radovan Garabík ? Itu mengharapkan file konfigurasi sebagai argumen dan bekerja dengan regexp. Jadi bukan tanpa konfigurasi, tetapi Anda dapat menggunakan substitusi proses proses (
<(list)
), jadi tentu saja tanpa konfigurasi manual :-)sumber
grc
memiliki script helper:grcat
. Berikut adalah contoh mewarnai semua huruf kapital dengan warna merah. Langkah 1: Atur file konfigurasi:printf "regexp=[A-Z]\ncolours=red\n" > ~/.grc/red-caps
Langkah 2; Gunakan:echo Hello World | grcat red-caps
... Halaman manual menyatakan 3 direktori config yang dicari, dan kemudian menyarankan (?) Bahwa file config dapat menjadi path absolut, tetapi metode terakhir ini untuk menemukan file config hanya bekerja dengan path relatif untuk saya (grc versi 1.3)Sed untuk menyelamatkan!
Anda dapat meningkatkan ini (karena memang benar-benar membutuhkannya) tetapi berfungsi dengan cukup baik.
Demi kesederhanaan, hilight menerima sepasang argumen (pertama pertandingan, kedua warna) Dalam skrip ini attrib selalu dicetak tebal
Baca man console_codes (Grafik Rendition) untuk melihat warna pelarian warna, atau coba ini
Ini memiliki kelemahan penting karena menggunakan karya ini:
tapi ini sama sekali tidak:
karena [: digit:] menemukan angka-angka dalam rahasia melarikan diri pada dukungan sebelumnya.
Sesuatu seperti:
akan selalu berfungsi sebagaimana dikecualikan.
Menggunakan perintah waktu saya menemukan kenaikan ini sebanyak empat kali waktu berlalu, yang tidak terlalu banyak.
Anda dapat mengganti perintah sed dengan parser lain yang Anda suka atau sesuai dengan kebutuhan Anda (awk, dll ...)
sumber
Anda juga dapat menggunakan egrep dengan pola yang cocok dengan setiap baris pada karakter yang tidak dapat dicetak, seperti:
sumber
Clide bekerja dengan baik. Saya menggunakannya di RHEL 6.2, dari repositori EPEL
sumber
Jika versi Anda
grep
disertai dengan warna, maka Anda dapat menggunakan perubahan regexp untuk membuat grep menyoroti teks dan juga mencocokkan setiap baris sehingga tidak ada yang dikecualikan. Yang berikut harus melakukan trik:sumber
Seperti yang Anda sebutkan di tautan,
grep --color=always
hanya berfungsi untuk satu pola. Yang mengatakan, saya tidak percaya alat seperti itu ada.sumber
Saya menggunakan http://em.readthedocs.org/ . Mudah dipasang di berbagai platform karena Python. Sederhana dan berfungsi dengan baik.
sumber
em
, harap tulis ulang jawaban Anda agar jelas bahwa Anda bukan pengguna, tetapi penulis alat yang disarankan.