The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
komme fra fil innen datoperioden ambharish UNIX for Dummies Spørsmål og svar 2 06-29-2007 06:20
Rapportfilen utvinning basert på Datoperiode ganapati Shell programmering og Skripting 2 07-13-2006 12:26
Loggfilbane dato sammenligne for brukerdefinerte utvalg mojo24 Shell programmering og Skripting 0 05-05-2006 07:39
hvordan du pakker ut en rekke linjer fra en fil beilstwh Shell programmering og Skripting 5 07-09-2004 09:20
Må skrive ut filnavn i en bestemt datoperiode bruker ls Shamwari UNIX for Dummies Spørsmål og svar 2 10-08-2001 08:14

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-30-2008
Sharmila_P Sharmila_P is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 19
hente linjer fra filen som faller inn under gitt datoperiode


Hei,

Jeg trenger å hente linjer som faller inn under gitt datoperiode.
eksempel: I en loggfil, jeg har den linjer som vil ha tidsstempel.
inntaket vil være noen dato range.eg: fra dato: 03/Jan/2008, til dato: 24/Jul/2008.so nå jeg ønsker å hente linjer
som har tidsstempelet mellom disse 2 gitt datoperiode.

loggfilen:
-----------
[02/Jan/2008 :19:37:00-20401-59-2] Prosess - data
[22/Jan/2008 :19:37:00-20401-59-2] Process - data
[22/Mar/2008 :19:37:00-20401-63-2] Process - data
[01/Jul/2008 :19:37:00-20401-63-2] Process - data
[22/Jul/2008 :19:37:00-20401-63-2] Process - data
[25/Jul/2008 :19:37:00-20401-63-2] Prosess - data

Resultatet:
Linjer 2,3,4 og 5 må hentes. datoene er innenfor de gitte input datoperiode.
  #2 (permalink)  
Old 07-30-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: april 2004
Sted: Bordeaux, Frankrike
Innlegg: 1433
En mulig løsning hjelp 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
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 19
Jeg får feilmelding når jeg kjører dette.
awk: syntaksfeil nær linje 1
awk: bailing ut nær linje 1

Ettersom jeg er ny på awk, kan du pls forklare hva dens doing.and jeg ønsker å viderekoble resultatene til en ny fil.
  #4 (permalink)  
Old 07-30-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: april 2004
Sted: Bordeaux, Frankrike
Innlegg: 1433
Forsøk med nawk eller gawk istedenfor awk.


Code:
awk -v From="03/Jan/2008" -v To="24/Jul/2008"

Definerer variabler fra og til som inneholder start-og sluttdato.


Code:
function cnvDate(date   ,d) {
   split(tolower(date), d, "/");
   return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}

Denne funksjonen coverts en dato fra 'dd / mmm / åååå "til" YYYYMMDD ".


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 feltet separator ':' eller '['
- Måneder tabellen brukes av cnvDate funksjon
- Start-og sluttdato format ÅÅÅÅMMDD


Code:
{
   date = cnvDate($2)
   if (date >= date_from && date <= date_to)
      print;
}

For hver inngangsstrøm:
- Konverter dato til formatet ÅÅÅÅMMDD
- Print linje hvis dato mellom start-og sluttdato


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

Bli Dato: juli 2008
Innlegg: 19
For den samme spørringen, hvis inndatafilen er slik (under), jeg prøvde å få linjene ved hjelp av feltet separator (FS) som fjerne mellomrom.
Jeg brukte koden som dette ..
BEGIN (
FS \u003d "[]";
Men det er ikke working.How jeg kan angi at det må ta den 7. feltet med skilletegnet enkelt space.or er det noen annen måte.
Inndatafilen:
-----------
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  
Registrert bruker
  
 

Bli Dato: april 2004
Sted: Bordeaux, Frankrike
Innlegg: 1433
Felt separator \u003d space (eller fane)
Datofelt \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

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 06:51.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0