Ketika saya menggunakan misalnya cat file.txt | grep --color=tty "pattern"
saya mendapatkan pola yang saya cari disorot. Ketika saya ingin lebih banyak konteks di sekitar setiap klik, grep memiliki -A
, -B
dan -C
parameter.
Namun, saya ingin menampilkan seluruh file (atau output perintah apa pun) dan menyoroti pola tertentu. Apakah ada perintah atau alat sorotan?
linux
command-line
DerMike
sumber
sumber
Jawaban:
Ada jawaban di unix.stackexchange.com yang punya trik rapi ini:
atau
yang cocok dengan pola Anda atau garis akhir pada setiap baris. Hanya polanya yang disorot.
sumber
GREP_OPTIONS='--color'
ke Anda~/.bashrc
(atau ubah pengaturan untuk disertakan--color
). Anda perlu memulai terminal baru atau menjalankan tugas itu di baris perintah di terminal saat ini agar dapat berlaku.Saya suka ack .
Ini seperti grep, tetapi lebih baik. Ini menyoroti secara default, dan dengan
--passthru
opsi itu menunjukkan seluruh file (atau input standar) bukan hanya baris yang cocok.sumber
tail
, maka Anda perlu menggunakan--filter
opsi ini juga. Misalnya:tail -f myLogFile | ack --filter --passthru pattern
Saya juga merekomendasikan penggunaan
less
(atau semacamnya), tetapi saya ingin menunjukkan kepada Anda solusi yang lebih taktis. Setelah Anda mendefinisikan fungsi ini:Anda dapat menggunakannya dengan cara ini:
Catatan: Versi ini peka terhadap huruf besar-kecil, untuk mengubah yang baru saja ditambahkan
i
setelahg
dalamsed
ekspresi.sumber
tput
bukan hardcoding nilai-nilai. Dengan cara ini Anda juga menghindari penggunaanecho -e
, yang dapat memiliki efek lain.prog | highlight "pattern"
atauhighlight "pattern" file
:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sed
Keterampilan saya pada dasarnya tidak ada. Bagaimana saya harus mengubahnya agar sesuai dengan case case yang sensitif. Lagi pula, saya akan menambahkan itu ke bash_functions saya termasuk. Terima kasih banyak.Melewati
-C
untukgrep
dengan nilai yang cukup tinggi akan melakukan hal ini.sumber
less
menyoroti pola, jadiatau
dan kemudian dalam waktu kurang
/
untuk mencari pola yang akan disorot.Catatan:
Anda dapat meningkatkan perintah Anda, misalnya
mengatur alias
alias grep="grep --color=tty"
dan menggunakannya seperti itu:sumber
grep
(zgrep, bzgrep, bzfgrep, dll.) Jadi, jika Anda ingin semua bentuk grep berperilaku konsisten, Anda harus menetapkan alias untuk setiap bentuk grep. @ Casual's jawaban baru di atas tidak akan untuk dengan sesuatu sepertibzgrep pattern /var/log/messages.?.gz
, yang merupakan contoh di mana penyorotan warna menjadi SANGAT membantu.Ada alat supercat yang bagus , yang melayani persis tujuan itu. Keduanya dapat mewarnai keluaran konsol Anda dan menghasilkan html "yang disorot" dari input Anda.
sumber
/etc/supercat
Ubuntu), yang mengatur aturan pewarnaan, mereka pada dasarnya adalah pasangan warna / regexp (dengan beberapa aturan tambahan); halaman manual juga pendek dan bagus.spcrc
file sintaks vim di vim.org/scripts/script.php?script_id=2676