Domanda

Sto usando 'tail-f' di seguire un file di log come è aggiornato; dopo mi pipe l'output di quello di grep per mostrare solo le linee contenenti un termine di ricerca ( "org.springframework" in questo caso); finalmente mi piacerebbe fare è il piping dell'output da grep ad un terzo comando, 'tagliato':

tail -f logfile | grep org.springframework | cut -c 25-

Il comando di taglio sarebbe rimuovere i primi 25 caratteri di ogni riga per me se si potesse ottenere l'input da grep! (Funziona come previsto se elimino 'grep' dalla catena.)

Sto usando Cygwin bash con.

I risultati effettivi:. Quando aggiungo il secondo tubo per la connessione al comando 'tagliare', il risultato è che si blocca, come se fosse in attesa di input (nel caso ve lo stiate chiedendo)

È stato utile?

Soluzione

Sul mio sistema, circa 8K fu tamponata prima ho avuto alcun output. Questa sequenza ha lavorato a seguire il file immediatamente:

tail -f logfile | while read line ; do echo "$line"| grep 'org.springframework'|cut -c 25- ; done

Altri suggerimenti

Supponendo GNU grep, aggiungere --line-buffered alla riga di comando, ad es.

tail -f logfile | grep --line-buffered org.springframework | cut -c 25-

Modifica

vedo grep buffer non è l'unico problema qui, come tagliare non consente formato da linee buffering.

si potrebbe desiderare di provare a sostituire con qualcosa che si può controllare, come ad esempio sed:

tail -f logfile | sed -u -n -e '/org\.springframework/ s/\(.\{0,25\}\).*$/\1/p'

o awk

tail -f logfile | awk '/org\.springframework/ {print substr($0, 0, 25);fflush("")}'

Quello che hai dovrebbe funzionare bene - che è l'idea di condotte. L'unico problema che vedo è che, nella versione del cut ho (GNU coreutiles 6,10), si dovrebbe usare il cut -c 25- sintassi (vale a dire utilizzare un segno meno, invece di un segno più) per rimuovere i primi 24 caratteri.

Sei anche alla ricerca di diversi modelli nei tuoi due esempi, nel caso in cui è rilevante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top