![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| 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 |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
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. |
|
||||
|
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. |
|
|||||
|
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. |
|
||||
|
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 |
|
|||||
|
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
|
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|