2013-03-10 9 views
15

Desidero emettere un segnale acustico, nel caso in cui siano presenti eccezioni nei file di registro.Come usare la coda in combinazione con sed.

Sto usando lo script di bash.

Ma sfortunatamente quando la coda viene utilizzata in combinazione con sed, non funziona.

Ho provato con i seguenti comandi e post qui.

tail -f mylogs.log | grep "Exception" | sed -e $'s/Exception/Exception\a/' 



tail -f mylogs.log | sed -e $'s/Exception/Exception\a/' 



tail -f mylogs.log | grep "Exception" | sed -e $'s/Exception/Exception\a/' 
+0

+1 per il costrutto '$ ''. Non l'ho mai visto prima. –

risposta

25

Il problema è che grep vede che non scrive al terminale, in modo che la sua uscita tamponi, eventualmente crei grossi blocchi che sed possibile elaborare tutti in una volta. A dire per stampare le linee non appena sono disponibili, utilizzare l'opzione --line-buffered:

tail -f mylogs.log \ 
    | grep --line-buffered Exception \ 
    | sed -u -e $'s/Exception/Exception\a/' 

(Si noti che ho anche aggiunto la bandiera -u-sed, che è simile a grep s' --line-buffered opzione Nei miei test non sembrava fare la differenza per questo comando, ma immagino sia meglio includerlo per ogni evenienza.)

+0

Osservazione: '$ 's/Exception/Exception \ a /'' non sembra cambiare il testo ma '$ 's/Exception/Exception \\\ a /'' è sul mio sistema. –

+0

@ruakh, ho appena provato il comando, registra solo il testo, ma non c'è audio. Devo fare qualche impostazione ?? – Kiran

+0

@ another.anon.coward: '\ a' è il carattere di avviso (campana); produce un segnale acustico, senza influenzare l'aspetto visivo della linea. – ruakh

Problemi correlati