![]() |
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 |
| get Bericht uit bestand binnen datumbereik | ambharish | UNIX voor Dummies Questions & Answers | 2 | 06-29-2007 05:20 PM |
| Verslag dossier extractie gebaseerd op Datumbereik | ganapati | Programmeren en Shell Scripting | 2 | 07-13-2006 11:26 |
| Logbestand datum vergelijken voor de gebruiker gedefinieerde reeks | mojo24 | Programmeren en Shell Scripting | 0 | 05-05-2006 06:39 |
| hoe om een aantal regels uit een bestand | beilstwh | Programmeren en Shell Scripting | 5 | 07-09-2004 08:20 |
| Moet afdrukken bestandsnamen in een bepaalde periode met behulp ls | Shamwari | UNIX voor Dummies Questions & Answers | 2 | 10-08-2001 07:14 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
ophalen lijnen uit bestand die onder de gegeven periode
Hoi, Ik moet halen de lijnen die onder de gegeven periode. bijvoorbeeld: in een logbestand, Ik heb de lijnen die moeten de tijdstempel. de ingang wordt een datum range.eg: vanaf datum: 03/Jan/2008, tot op heden: 24/Jul/2008.so Nu wil ik de lijnen te halen die de timestamp tussen deze 2 hebben gegeven periode. logboekbestand: ----------- [02/Jan/2008 :19:37:00-20401-59-2] Proces - gegevens [22/Jan/2008 :19:37:00-20401-59-2] Proces - gegevens [22/Mar/2008 :19:37:00-20401-63-2] Proces - gegevens [01/Jul/2008 :19:37:00-20401-63-2] Proces - gegevens [22/Jul/2008 :19:37:00-20401-63-2] Proces - gegevens [25/Jul/2008 :19:37:00-20401-63-2] Proces - gegevens resultaat: Lijnen 2,3,4 en 5 moeten worden opgehaald. de data zijn binnen de gegeven input datumbereik. |
|
||||
|
Ik krijg de foutmelding als ik run dit.
awk: syntaxisfout buurt van lijn 1 awk: bail out buurt van lijn 1 Als ik nieuwe uur tot awk, kunt u pls uitleggen wat precies haar doing.and Ik wil de resultaten te leiden naar een nieuw bestand. |
|
|||||
|
Probeer met nawk of gawk in plaats van awk.
Code:
awk -v From="03/Jan/2008" -v To="24/Jul/2008" Code:
function cnvDate(date ,d) {
split(tolower(date), d, "/");
return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
Code:
BEGIN {
FS = "[:[]";
month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
date_from = cnvDate(From);
date_to = cnvDate(To);
}
- Input field separator ':' of '[' - Maanden tabel gebruikt door cnvDate functie - Start-en einddatum formaat jjjjmmdd Code:
{
date = cnvDate($2)
if (date >= date_from && date <= date_to)
print;
}
- Converteer datum formaat jjjjmmdd - Print regel als datum tussen begin-en einddatum Jean-Pierre. |
|
||||
|
Om dezelfde query, als de input bestand is als volgt (zie hieronder), heb ik geprobeerd om de lijnen met behulp van het veld separator (FS) als lege ruimte.
Ik gebruikte de code zoals deze .. BEGIN ( FS \u003d "[]"; Maar het is niet working.How ik kan aangeven dat zij heeft op het 7e veld te nemen met het scheidingsteken enkele space.or is er een andere manier. Input file: ----------- 2008-01-02 16:21:35,182 INFO1 loginslogging - mk99263 02/Jan/2008 16:21 2008-01-22 16:21:35,182 info2 loginslogging - mk99263 22/Jan/2008 16:21 2008-03-22 16 : 21:35,182 INFO3 loginslogging - mk99263 22/Mar/2008 16:21 2008-07-01 16:21:35,182 INFO4 loginslogging - mk99263 01/Jul/2008 16:21 2008-07-22 16:21:35,182 INFO5 loginslogging - mk99263 22/Jul/2008 16:21 2008-07-25 16:21:35,182 INFO6 loginslogging - mk99263 25/Jul/2008 16:21 |
|
|||||
|
Field separator \u003d ruimte (of tab)
Datumveld \u003d $ 7 Code:
awk -v From="03/Jan/2008" -v To="24/Jul/2008" '
function cnvDate(date ,d) {
split(tolower(date), d, "/");
return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
BEGIN {
month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
date_from = cnvDate(From);
date_to = cnvDate(To);
}
{
date = cnvDate($7)
if (date >= date_from && date <= date_to)
print;
}
' inputfile
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|