![]() |
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 |
| Numero di linee in un file (script perl) | jisha | Shell scripting e di programmazione | 5 | 05-20-2008 08:11 AM |
| Script per proclog scansione dei file | deeprajn95 | Shell scripting e di programmazione | 3 | 05-12-2008 07:25 AM |
| Perl: Rimettersi riferimento da s modificatore | cooldude | Shell scripting e di programmazione | 8 | 03-19-2008 09:49 AM |
| Script in Perl per la scansione di file tramite | gholdbhurg | Shell scripting e di programmazione | 1 | 03-05-2008 10:53 PM |
| Come effettuare la scansione solo aggiunto nuove linee nel file? | redlotus72 | UNIX for Dummies Domande & Risposte | 3 | 04-28-2005 04:34 PM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Script in Perl per la scansione di linee di ritorno
Salve Perl guru,
Ho questo file per eseguire la scansione tramite. Esempi di linee di seguito: 2008031A, USERNAME, 12345, ABC dare, prendere XYZ, transazione presentata 2008031B, USERNAME, 12346, in attesa di lavorazione 2008031C, USERNAME, 12347, Recupero risposta 2008031D, USERNAME, 12348, Questa non è una valida trattare 2008031E, USERNAME, 12349, membro abbia mancato 2008031F, USERNAME, 12350, System \u003d 0 2008031G, USERNAME, 12351, attesa per i nuovi txns 2008031H, qualcuno, 12352, dare STE, prendere GVO, transazione presentata 2008031I, qualcuno, 12353, in attesa di lavorazione 2008031J, qualcuno, 12354, Recupero risposta 2008031K, qualcuno, 12355, Questa non è una valida trattare 2008031L, QUALCUNO, 12356, membro abbia mancato 2008031M, QUALCUNO, 12357, System \u003d 0 2008031N, QUALCUNO, 12358, attesa per i nuovi txns Ho bisogno di ricerca di questo modello -> "Questa non è una valida trattare" Quando una linea trovato una corrispondenza, è necessario scrivere nel registro la <UserName> così come il dare e avere valore (ad esempio, ABC, XYZ) Dopo la scansione di file di cui sopra, errore di registro dovrebbe apparire: ERRORE: Nome utente (ABC, XYZ) ERRORE: qualcuno (STE, GVO) Qualsiasi idee? Grazie in anticipo ragazzi. |
|
||||
|
Operazioni possono essere mescolate nel file di log, o tutti i dettagli di una transazione su linee adiacenti, e tutte le linee adiacenti appartengono alla stessa operazione, o segnano il confine per la prossima operazione?
Se una transazione sempre inizio con il "dare" e "prendere" roba? Se una transazione sempre con il fine "di attesa per i nuovi txns" linea? Codice:
vnix$ perl -ne 'if (/give ([^,]*), take ([^,]*), transaction submitted/) { $give = $1; $take = $2; }
if (/Waiting for new txns/) { $give = $take = undef; }
if (/, ([^,]*), [^,]*, This is not a valid/) { print "UPPERCASE: $1 ($give, $take)\n"}' /tmp/txn
UPPERCASE: USERNAME (ABC, XYZ)
UPPERCASE: SOMEONE (STE, GVO)
|
|
||||
|
prendere in considerazione e awk versione:
Codice:
csadev:/home/jmcnama> cat t.awk
awk -F, 'BEGIN { give=""}
{
if($4 ~ /give/){
give=sprintf("%s%,%s" ,
substr($4, length($4)-3),
substr($5, length($5)-3 ) )
}
if($4 ~ /This is not a valid dealing/) {
printf("ERROR: %s (%s)\n", $2, give)
}
} ' filename
csadev:/home/jmcnama> cat filename
2008031A, USERNAME, 12345, give ABC, take XYZ, transaction submitted
2008031B, USERNAME, 12346, waiting for processing
2008031C, USERNAME, 12347, Retrieving response
2008031D, USERNAME, 12348, This is not a valid dealing
2008031E, USERNAME, 12349, State has failed
2008031F, USERNAME, 12350, System=0
2008031G, USERNAME, 12351, Waiting for new txns
2008031H, SOMEONE, 12352, give STE, take GVO, transaction submitted
2008031I, SOMEONE, 12353, waiting for processing
2008031J, SOMEONE, 12354, Retrieving response
2008031K, SOMEONE, 12355, This is not a valid dealing
2008031L, SOMEONE, 12356, State has failed
2008031M, SOMEONE, 12357, System=0
2008031N, SOMEONE, 12358, Waiting for new txns
csadev:/home/jmcnama> t.awk
ERROR: USERNAME ( ABC, XYZ)
ERROR: SOMEONE ( STE, GVO)
|
|
||||
|
Hi epoca / jim,
Grazie per la rapida risposta. >>> Hi epoca, La mia risposta di seguito: 1. Operazioni possono essere mescolate nel file di log, o tutti i dettagli di una transazione su linee adiacenti, e tutte le linee adiacenti appartengono alla stessa operazione, o segnano il confine per la prossima operazione? ANS: Sì, tutti i dettagli di una transazione sarà adiacente a righe, e tutte le linee adiacenti appartengono allo stesso utente / transazione. 2. Se una transazione sempre inizio con il "dare" e "prendere" roba? Se una transazione sempre con il fine "di attesa per i nuovi txns" linea? ANS: Sì che sarà sempre la linea di tutti i txns, ma alla fine le linee può variare. Per quelli di successo, non vi è alcuna abitudine "Questo non è un valido trattare" linea nel mezzo. >>> Btw, se possibile, preferirei questo in perl ![]() Speranza di sentire dagli altri guru. Apprezzo molto. Ultimo a cura di gholdbhurg; al 03/18/2008 12:41 PM.. |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|