![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui. |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| Número de linhas em um arquivo (Perl) | jisha | Programação Shell Script e | 5 | 05-20-2008 08:11 |
| Script para Scan proclog arquivos | deeprajn95 | Programação Shell Script e | 3 | 05-12-2008 07:25 |
| Perl: Voltando de referência s modificador | cooldude | Programação Shell Script e | 8 | 03-19-2008 09:49 |
| Perl para fazer a varredura através de arquivos | gholdbhurg | Programação Shell Script e | 1 | 03-05-2008 10:53 |
| Como digitalizar apenas novas linhas adicionadas no arquivo? | redlotus72 | UNIX para Dummies Perguntas & Respostas | 3 | 04-28-2005 04:34 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Perl para fazer a varredura de volta linhas
Oi Perl gurus,
Eu tenho esse arquivo para fazer a varredura através. Amostra linhas abaixo: 2008031A, USERNAME, 12345, dar ABC, tomar XYZ, operação apresentado 2008031B, USERNAME, 12.346, à espera de tratamento 2008031C, USERNAME, 12347, Recuperando resposta 2008031D, USERNAME, 12348, o que não é um tratamento válido 2008031E, USERNAME, 12349, Membro não 2008031F, USERNAME, 12350, Sistema \u003d 0 2008031G, USERNAME, 12.351, à espera de novas txns 2008031H, alguém, 12352, dar STE, tomar GVO, operação apresentado 2008031I, alguém, 12.353, à espera de tratamento 2008031J, alguém, 12354, Recuperando resposta 2008031K, alguém, 12355, o que não é um tratamento válido 2008031L, alguém, 12356, Membro não 2008031M, ALGUÉM, 12357, Sistema \u003d 0 2008031N, alguém, 12.358, à espera de novas txns Eu preciso de pesquisa para este padrão -> "Este não é um tratamento válido" Quando uma linha encontrada uma correspondência, que deve escrever no diário da <UserName> bem como dar e receber o valor (ou seja, ABC, XYZ) Após a varredura acima arquivo, registro de erro deve aparecer: ERRO: NOMEDOUSUÁRIO (ABC, XYZ) ERRO: ALGUÉM (STE, GVO) Qualquer idéias? Thanks in advance caras. |
|
||||
|
Operações podem ser misturadas no arquivo de log, ou vão todos os detalhes de uma operação seja em linhas adjacentes, e todas as linhas adjacentes pertencem a uma mesma operação, ou marcar a fronteira para a próxima operação?
Será que uma transação iniciar sempre com a "dar" e "ter" coisas? Será uma operação terminar sempre com o "À espera de novas txns" linha? Código:
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)
|
|
||||
|
Considerar e awk versão:
Código:
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)
|
|
||||
|
Oi época / Jim,
Obrigado pela rápida resposta. >>> Oi era, Minhas respostas abaixo: 1. Operações podem ser misturadas no arquivo de log, ou vão todos os detalhes de uma operação seja em linhas adjacentes, e todas as linhas adjacentes pertencem a uma mesma operação, ou marcar a fronteira para a próxima operação? ANS: Sim, todos os detalhes de uma operação será em linhas adjacentes, e todas as linhas adjacentes pertencem ao mesmo usuário / transação. 2. Será que uma transação iniciar sempre com a "dar" e "ter" coisas? Será uma operação terminar sempre com o "À espera de novas txns" linha? ANS: Sim que será sempre o início da linha txns todos, mas as linhas finais podem variar. Para mais bem sucedida, não vai ser qualquer "Este não é um tratamento válido" linha no meio. >>> Btw, se possível, eu preferiria que este em perl ![]() Esperamos ouvir dos outros gurus. Agradeço muito. Última edição por gholdbhurg; em 03/18/2008 12:41.. |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|