![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Aantal regels in een bestand (perl script) | jisha | Programmeren en Shell Scripting | 5 | 05-20-2008 07:11 |
| Script om Scan proclog bestanden | deeprajn95 | Programmeren en Shell Scripting | 3 | 05-12-2008 06:25 |
| Perl: Getting terug vindplaats uit s modifier | cooldude | Programmeren en Shell Scripting | 8 | 03-19-2008 09:49 |
| Perl script te scannen door bestanden | gholdbhurg | Programmeren en Shell Scripting | 1 | 03-05-2008 10:53 PM |
| Hoe scan alleen nieuwe lijnen toegevoegd in het bestand? | redlotus72 | UNIX voor Dummies Questions & Answers | 3 | 04-28-2005 03:34 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Perl script te scannen terug lijnen
Hoi Perl goeroes,
Ik heb dit bestand te scannen door. Monster lijnen hieronder: 2008031A, USERNAME, 12345, geven ABC neemt XYZ, transactie ingediend 2008031B, USERNAME, 12346, wachtend voor de verwerking 2008031C, USERNAME, 12347, ophalen reactie 2008031D, USERNAME, 12348, Dit is geen geldig maken 2008031E, USERNAME, 12349, Staat er niet in is geslaagd 2008031F, USERNAME, 12350, System \u003d 0 2008031G, USERNAME, 12351, Wachten op nieuwe txns 2008031H, SOMEONE, 12352, geef STE, neem GVO, transactie ingediend 2008031I, SOMEONE, 12353, wachtend voor de verwerking 2008031J, SOMEONE, 12354, ophalen reactie 2008031K, SOMEONE, 12355, Dit is geen geldig maken 2008031L, SOMEONE, 12356, Staat er niet in is geslaagd 2008031M, SOMEONE, 12357, System \u003d 0 2008031N, SOMEONE, 12358, Wachten op nieuwe txns Ik moet op zoek naar dit patroon -> "Dit is geen geldig omgaan" Wanneer een lijn gevonden een wedstrijd, het moet schrijven in het logboek de <Gebruikersnaam> alsmede het geven en nemen waarde (dwz ABC, XYZ) Na het scannen van bovenstaande bestand, foutenlogboek moeten verschijnen: FOUT: gebruikersnaam (ABC, XYZ) FOUT: SOMEONE (STE, GVO) Any ideas? Thanks in advance jongens. |
|
||||
|
Kan transacties worden in het midden tussen het log bestand, of zullen alle details van een transactie worden op de aangrenzende lijnen, en alle aangrenzende lijnen behoren tot dezelfde transactie, of het merk de grens naar de volgende transactie?
Is een operatie altijd beginnen met het "geven" en "nemen" spul? Is een operatie altijd eindigen met de "Wachten op nieuwe txns" regel? Code:
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)
|
|
||||
|
overwegen en awk versie:
Code:
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 tijdperk / Jim,
Bedankt voor de snelle reactie. >>> Hi tijdperk, Mijn reacties hieronder: 1. Kan transacties worden in het midden tussen het log bestand, of zullen alle details van een transactie worden op de aangrenzende lijnen, en alle aangrenzende lijnen behoren tot dezelfde transactie, of het merk de grens naar de volgende transactie? ANS: Ja, alle details van een transactie zal worden op de aangrenzende lijnen, en alle aangrenzende lijnen behoren tot dezelfde gebruiker / transactie. 2. Is een operatie altijd beginnen met het "geven" en "nemen" spul? Is een operatie altijd eindigen met de "Wachten op nieuwe txns" regel? ANS: Ja dat zal altijd de start van alle txns, maar het einde lijnen kan variëren. Voor succesvol zijn, er gewoon zijn van "Dit is geen geldige omgaan" regel in tussen. >>> Btw, indien mogelijk, ik zou liever in perl ![]() Hoop te horen van de andere goeroes. Appreciate it very much. Laatst gewijzigd door gholdbhurg; op 03.18.2008 12:41.. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|