GNU/Linux >> Linux Esercitazione >  >> Linux

Grep in un file di registro enorme (> 14 GB) solo l'ultimo x GB?

Soluzione 1:

Immagino che potresti usare tail per produrre solo gli ultimi 4 GB o giù di lì usando -c cambia

-c, --bytes=[+]NUM
emettere gli ultimi NUM byte; oppure usa -c +NUM per l'output che inizia con il byte NUM di ciascun file

Probabilmente potresti fare qualcosa anche con dd impostando bs=1 e skip all'offset che vuoi iniziare, ad es.

dd if=file bs=1024k skip=12g | grep something

Soluzione 2:

Lo sto pubblicando solo perché alcuni dei commenti lo richiedevano.

Quello che ho finito per usare era (file da 15 GB). Ha funzionato molto velocemente e mi ha fatto risparmiare un sacco di tempo.

tail -f -c 14G file | grep something

Ho anche fatto un benchmark molto rudimentale sullo stesso file. Ho testato:

grepxxx
// ha impiegato per sempre (> 5 minuti)

dd if=file bs=1 skip=14G | grep xxx
// molto veloce <1 sec

coda -c 14g | grep xxx
// piuttosto veloce <2 sec

il tail è solo un po' più breve.

NB: il suffisso utilizzato g e G differiscono per comando (Ubuntu 15.10)

Soluzione 3:

Questo non risponde alla domanda sul titolo, ma farà quello che vuoi fare. Usa tac per invertire il file, quindi usa grep per trovare la tua stringa. Se la tua stringa si verifica solo una volta o un numero noto di volte nel file, lasciala eseguire finché non trova il numero noto di occorrenze. In questo modo, se la tua ipotesi su dove si trova nel file non è corretta, lo troverà comunque. Se vuoi limitarlo, puoi usare head per farlo. Il comando head andrebbe tra tac e grep.

Quindi il comando è simile a:

tac < logfile | grep myString

Linux
  1. Grep Word all'interno di un file, quindi copia il file?

  2. Output su Stdout e allo stesso tempo Grep in un file?

  3. Come contare il numero di righe in un file dopo una corrispondenza Grep?

  4. Come filtrare il registro Dmesg per vedere solo gli errori?

  5. Aggiunta di una riga a un file solo se non esiste già

Zsync:un'utilità di trasferimento file per scaricare solo le nuove parti di un file

Il tutorial sul comando Grep con esempi per principianti

Rimuovere la virgola tra le virgolette solo in un file delimitato da virgole?

Trova solo la prima occasione usando solo Grep?

I 15 migliori visualizzatori di registri Linux e strumenti di gestione dei file di registro

File di registro di coda su più macchine su ssh