2009-12-02 10 views
9

Ho bisogno di grep un'intera directory per una stringa e ottengo circa 50 risultati. Mi piacerebbe colorare ogni seconda linea, o il colore del testo o il colore dello sfondo. Il migliore sarebbe uno script in cui posso reindirizzare l'output di qualsiasi comando e in modo che sputa lo stesso output (anche se colorato).Un modo semplice per colorare le righe di output alternative in bash

risposta

13

Non molto bella, ma fa il trucco:

(salvare questo per foo.bash e fare grep whatever wherever | ./foo.bash)

#!/bin/bash 
while read line 
do 
    echo -e "\e[1;31m$line" 
    read line 
    echo -e "\e[1;32m$line" 
done 
echo -en "\e[0m" 

Qui potete trovare il list of color codes in bash.

+1

Molto ordinato, può essere utilizzato anche come una funzione di evitare un secondo script. –

+3

Mi piace, ma hai dimenticato di reimpostare in seguito: echo -en '\ e [0m'; – naught101

+0

@ naught101 buon punto, risolto ora. – Kimvais

4

Perl è installato su molti sistemi. Si potrebbe avere alternativo per voi:

grep -r whatever somedir/ | perl -pe '$_ = "\033[1;29m$_\033[0m" if($. % 2)' 

In Perl $. può essere sostituito con $INPUT_LINE_NUMBER, se si preferisce la leggibilità.

2

e qui è lo stesso in python;

import sys 
for line_number,line in enumerate(sys.stdin.readlines()): 
    print '%s[1;3%dm%s%s[0m' % (chr(27),(line_number % 2+1),line,chr(27)), 
2

Questo per delineare linee avvolte presumo? Questo script di shell utilizza un colore di sfondo dalla tavolozza 256 color, in modo da non interferire con altre evidenziazioni che potrebbe fare grep --color.

#!/bin/sh 
c=0 
while read line; do 
    [ $(($c%2)) -eq 1 ] && printf "\033[48;5;60m" 
    printf "%s\033[0m\n" "$line" 
    c=$(($c+1)) 
done 

Questo ha l'avvertenza che rovesciano ecc all'interno della linea vengono alterati, quindi trattare questo come pseudo-codice per reimplementation

+0

Hah , se avessi saputo di --color probabilmente non avrei avuto bisogno di questo, ma entrambi sono buoni. Grazie per la soluzione ponderata. – naught101

Problemi correlati