![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| grep'ing un file fino a un certo messaggio appare | pallak7 | Shell scripting e di programmazione | 3 | 04-23-2009 11:48 AM |
| grep'ing per specifici delle directory, e utilizzando l'uscita per spostare i file | JayC89 | Shell scripting e di programmazione | 1 | 12-06-2008 03:37 AM |
| Accelerazione uno script di shell (trovare, e grep un ciclo for) | Dave Stockdale | UNIX for Dummies Domande & Risposte | 8 | 08-11-2008 04:36 AM |
| Accelerare la trasformazione di un file | dlam | Shell scripting e di programmazione | 4 | 07-19-2008 12:47 PM |
| accelerare l'elaborazione su ambiente SUN Solaris | swamymns | Shell scripting e di programmazione | 2 | 07-12-2006 12:06 PM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Ho un file che è di 20 - 80 + MB che è un certo tipo di file di log.
E 'uno dei nostri log dei processi e questo processo è multi-threaded. Pertanto, il file di log è una specie di pasticcio. Ecco un esempio: Il file di log una cosa simile: "DATE TEMPO - FILO ID - Dettagli", e un nuovo file viene creato per ogni giorno Citazione:
Una sessione può durare da 30 secondi a 4 minuti o così (~ 1200 righe) nel file di log, e vi possono essere fino a 20 sessioni. Ora, ho una cosa che funziona - anche se molto lentamente. Io alla fine grepping e sedding il file più volte. Quando il file viene grande, ci vuole una massiccia quantità di tempo. Io sono qui sperando che qualcuno mi può aiutare ottimizzare questo. Se possibile, vorrei usare bash. Grazie, Eric Qui è il codice che ho, ma è _slow_ Codice:
if [[ -e "$log_file" ]]
then
echo "parsing: "$log_file
grep "starting session" $log_file | while read line
do
thread=`echo $line | cut -d' ' -f4`
sessiontype=`echo $line | cut -d' ' -f6`
sessionnumber=`echo $line | cut -d' ' -f7`
echo " first line of session: "${line:0:25}"..."
line2=`echo - $thread - $sessiontype $sessionnumber shutting down`
echo " last line of session: "${line2:0:25}"..."
sed -n "/$line/,/$line2/p" $log_file | grep " - $thread - ">session.$thread.$sessiontype.$sessionnumber
done
....
Citazione:
|
|
||||
|
Presumendo che la prima linea di una sessione termina con "partire sessione" si può provare questo (non testato):
Codice:
awk '{
!a[$4]{a[$4]=$4; n[$4]="session."$4"."$6"."$7}
a[$4]{print > n[$4]}
' file
Saluti |
|
||||
|
Scusa, mi avrebbe dovuto essere più specifico. L'inizio della fine sessione tutte le linee con qualcosa come:
20090409 000122 - BD0 - Ordine di partenza 123 sessione client con 12 porta 34 20090409 000123 - EF0 - Ordine di partenza 234 sessione client con 347 porto 38 ... E sia il client e la porta sono valori dinamici. Yeah, I'm errori - Io corro sotto cygwin, in modo che non hanno facile accesso a nawk. |
|
||||
|
provare questo --
$ Sort-k 4 file di log | awk 'NR \u003d\u003d 1 (prev \u003d $ 4; txt \u003d "sessione". $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); getliine) (if (prev! ~ $ 4) (txt \u003d "sessione". $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); prev \u003d $ 4) else (print $ 0; prev \u003d $ 4)) ' darà qualcosa di simile -- session.11F.Processing. 20090409 000127 - 11F - Processing20090409 000127 - 11F - Trasformazione 20090409 000127 - 11F - Query 543 a partire sessione session.BD0.More.Processing 20090409 000122 - BD0 - Altro Processing20090409 000125 - BD0 - Più di elaborazione 20090409 000126 - BD0 - Ordinanza 123 chiusura 20090409 000122 - BD0 - Ordine di partenza 123 sessione 20090409 000122 - BD0 - Trasformazione 1 20090409 000124 - BD0 - Trasformazione 2 session.DD1.Cancel.345 20090409 000125 - DD1 - Cancellare 345 a partire session20090409 000125 - DD1 - Trasformazione 20090409 000126 - DD1 - Trasformazione 2 session.EF0.Order.234 20090409 000123 - EF0 - 234 Ordine di partenza session20090409 000124 - EF0 - Trasformazione 20090409 000125 - EF0 - Trasformazione salute, Devaraj Takhellambam |
![]() |
| Segnalibri |
| Tag |
| bash, grep, sed |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|