2009-06-09 4 views

risposta

206

Utilizzare cut. Per esempio. per mettere a nudo i primi 4 caratteri di ogni riga (cioè iniziare il 5 char):

tail -f logfile | grep org.springframework | cut -c 5- 
+0

hai qualche idea del motivo per cui la pipa non funziona? quando eseguo essenzialmente quel comando, 'cut' non stampa i risultati sullo stdout ... se eseguo 'tail -f logfile | cut -c 5- 'posso vedere i risultati ... il problema deve essere con grep sto usando cygwin FYI grazie – les2

+0

cosa succede se non si aggiunge l'ultimo tubo e si taglia? in fondo, se rimuovi l'ultima parte della linea? – LB40

+0

it "code" file di log, filtrandola con grep (cioè, tutte le linee con "org.springframework" in essi vengono stampate a stdout) quando aggiungo il tubo per 'tagliare' ... si blocca TUTTAVIA, se elimino 'grep' il 'taglio' funziona correttamente ... sto pensando che c'è qualcosa di sbagliato in come sto usando grep ... potrebbe essere una cosa cygwin anche – les2

2
tail -f logfile | grep org.springframework | cut -c 900- 

eliminerebbe i primi 900 caratteri

cut usa le 900- per mostrare il carattere 900a alla fine della linea

tuttavia quando ho pipe tutto questo attraverso grep non ho ricevuto qualsiasi cosa

+4

"cut -c 1-900" non "rimuovere i primi 900 caratteri" - - lascerà solo i primi 900 caratteri.Se vuoi rimuovere i primi 900 caratteri, usa "cut -c 901-" – iammichael

+0

anche i primi 900 caratteri su ciascuna riga, per la risposta di @ iammichael –

30
sed 's/^.\{5\}//' logfile 

e si sostituisce 5 per il numero che si desidera ... dovrebbe fare il trucco ...

EDIT se per ogni linea sed 's/^.\{5\}//g' logfile

+0

questo dovrebbe essere piuttosto 'sed' s/^. \ {, 5 \} // 'logfile' – user3719454

12

È possibile utilizzare cut:

cut -c N- file.txt > new_file.txt 

-c: caratteri

file.txt: di file di input

new_file.txt: file di output

N-: personaggi da N a finire per essere tagliati e di uscita per il nuovo file.

Può anche avere altri argomenti come: 'N', 'N-M', '-M' che significa nesimo carattere, da nth a mth, prima rispettivamente al carattere mth.

Questo eseguirà l'operazione su ciascuna riga del file di input.

+4

Uso inutile di 'cat',' cut file.txt -cN-> new_file.txt' funzionerà altrettanto bene – ChrisWue

1

ritengo awk sarebbe lo strumento migliore per questo in quanto può sia filtro ed eseguire le necessarie funzioni di manipolazione stringa su linee filtrati:

tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}' 

o

tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)' 
0

Ecco funzione semplice, testato in bash. 1 ° param della funzione è la stringa, 2 ° param è il numero di caratteri da spogliato

function stringStripNCharsFromStart { echo ${1:$2:${#1}} }

Usage: enter image description here