The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-30-2008
Sharmila_P Sharmila_P is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2008
Posts: 19
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.
  #2 (permalink)  
Old 07-30-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.421
Een mogelijke oplossing om met awk :
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 {
   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);
}
{
   date = cnvDate($2)
   if (date >= date_from && date <= date_to)
      print;
}
' inputfile
Jean-Pierre
  #3 (permalink)  
Old 07-30-2008
Sharmila_P Sharmila_P is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2008
Posts: 19
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.
  #4 (permalink)  
Old 07-30-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.421
Probeer met nawk of gawk in plaats van awk.

Code:
awk -v From="03/Jan/2008" -v To="24/Jul/2008"
Definieert variabelen Van en Naar welke begin en eind data bevatten.

Code:
function cnvDate(date   ,d) {
   split(tolower(date), d, "/");
   return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
Deze functie dekveren een datum uit 'dd / mmm / yyyy' naar 'jjjjmmdd'.

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);
}
Initalizations:
- 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;
}
Voor elk ingangslijnsysteem:
- Converteer datum formaat jjjjmmdd
- Print regel als datum tussen begin-en einddatum


Jean-Pierre.
  #5 (permalink)  
Old 07-31-2008
Sharmila_P Sharmila_P is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2008
Posts: 19
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
  #6 (permalink)  
Old 07-31-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.421
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
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 09:27.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0