The UNIX and Linux Forums  


Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
get Üzenet a fájl belül dátumtartomány ambharish A UNIX a dummies Kérdések és válaszok 2 06-29-2007 06:20 PM
Report file extrahálás alapuló Időintervallum ganapati Shell programozás és Scripting 2 07-13-2006 12:26 PM
Naplófájl dátum összehasonlítani a felhasználók meghatározott körére mojo24 Shell programozás és Scripting 0 05-05-2006 07:39 AM
Hogyan szedd ki a különböző sorokat a fájl beilstwh Shell programozás és Scripting 5 07-09-2004 09:20 AM
Szükségességét, hogy a nyomtatási fájl nevét egy bizonyos dátumtartományt segítségével ls Shamwari A UNIX a dummies Kérdések és válaszok 2 10-08-2001 08: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 Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 07-30-2008
Sharmila_P Sharmila_P is offline
Regisztrált felhasználó
  
 

Join Date: Jul 2008
Hozzászólások: 19
A fájl letöltése vonalak, amelyek a megadott dátumtartomány


Szia,

Meg kell tölteni a sorokat, amelyek hatálya alá tartoznak az adott időszakra.
pl: egy log file, nekem van a vonalak, amelyek rendelkeznek a timestamp.
a bemenet lesz néhány napja range.eg: a dátum: 03/Jan/2008, a mai napig: 24/Jul/2008.so most szeretnék tölteni a sorokat
amelyek a timestamp közötti 2 adott időszakra.

log file:
-----------
[02/Jan/2008 :19:37:00-20401-59-2] folyamat - adatok
[22/Jan/2008 :19:37:00-20401-59-2] Process - az adatok
[22/Mar/2008 :19:37:00-20401-63-2] Process - az adatok
[01/Jul/2008 :19:37:00-20401-63-2] Process - az adatok
[22/Jul/2008 :19:37:00-20401-63-2] Process - az adatok
[25/Jul/2008 :19:37:00-20401-63-2] folyamat - adatok

Eredmény:
Lines 2,3,4 és 5 kell letölteni. A dátumok a megadott bemeneti dátumtartományt.
  #2 (permalink)  
Old 07-30-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Apr 2004
Helyszín: Bordeaux, Franciaország
Hozzászólások: 1.433
Egy lehetséges megoldás alkalmazásával awk :
Kód:
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
Regisztrált felhasználó
  
 

Join Date: Jul 2008
Hozzászólások: 19
Kapok a hiba, ha én vezetem ezt.
awk: syntax error near line 1
awk: bailing a közeljövőben sor 1

Mint én, hogy az új awk, tudna ön pls magyarázza, hogy pontosan mit doing.and akarom irányítani az eredmények egy új fájlt.
  #4 (permalink)  
Old 07-30-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Apr 2004
Helyszín: Bordeaux, Franciaország
Hozzászólások: 1.433
Próbálja meg nawk vagy mamlasz helyett awk.


Kód:
awk -v From="03/Jan/2008" -v To="24/Jul/2008"

A változó határozza meg, és amelynek tartalmaznia kezdő és záró dátumát.


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

Ez a funkció fedőtollak egy időpontot, "dd / mmm / yyyy" helyett az "ÉÉÉÉHHNN".


Kód:
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 mező elválasztó ':' vagy '['
- Hónapok tábla által használt cnvDate funkció
- Kezdő és befejező dátum ÉÉÉÉHHNN formában


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

Minden bemeneti sor:
- Convert dátum ÉÉÉÉHHNN formában
- Nyomtatási sorba, ha dátum kezdete és befejezése közötti dátumok


Jean-Pierre.
  #5 (permalink)  
Old 07-31-2008
Sharmila_P Sharmila_P is offline
Regisztrált felhasználó
  
 

Join Date: Jul 2008
Hozzászólások: 19
Ugyanarra a lekérdezés, ha a bemeneti fájl van, mint ez (lent), megpróbáltam szerzés a sorok segítségével mező szeparátor (FS), mint üres hely.
ÉN használt a kódot, mint ez ..
BEGIN (
FS \u003d "[]";
Working.How de nem tudom meg, hogy meg kell tennie a 7. területen a határoló egyetlen space.or van bármilyen más módon.
Bemeneti fájl:
-----------
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  
Regisztrált felhasználó
  
 

Join Date: Apr 2004
Helyszín: Bordeaux, Franciaország
Hozzászólások: 1.433
Field separator \u003d space (vagy tab)
Date field \u003d $ 7

Kód:
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

Könyvjelzõk

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 05:12 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0