The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Titelinformation räknas baserat på ett sökord i bokföringen aemunathan Shell-programmering och Skript 4 03-03-2009 08:39
validera en fil baserat på villkor trichyselva Shell-programmering och Skript 8 01-02-2009 08:51
Baserat på antalet poster i fil1 behöva kontrollera posterna i fil2 att ställa några condns mavesum Shell-programmering och Skript 3 11-26-2008 10:48
dellicens linjer bygger på några villkor prvnrk Shell-programmering och Skript 4 10-17-2008 06:24
Räkna Antal Poster i fil utan räknar Sidhuvud och Trailer Records guiguy Shell-programmering och Skript 2 06-07-2007 01:15

Reply
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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 06-05-2009
aemunathan aemunathan is offline
Registered User
  
 

Join Date: maj 2008
Inlägg: 75
använda awk räkna inga poster baserat på villkor

Hej

Jag har filerna med datum och tid stämpel som mappnamnen gillar 200906051400,200906051500,200906051600 ..... därmed vardagliga 24 filer kommer att genereras

Jag måste göra vissa saker på den här 24-filer dagligen

filen innehåller data, exempelvis
Kod:
200906050016370   0   1244141195225298lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2128                                                        LOCATIONMANAGER          SLIR                 919443200299   MSISDN  ASC   919443200299   0   SUCCESS                                           1244141195225298less      919443200299        124414      79.301938811.6885305NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906050016440   0   1244141197503299lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2139                                                        LOCATIONMANAGER          SLIR                 919449838266   MSISDN  ASC   919449838266   0   SUCCESS                                           1244141197503299less      919449838266        124414      74.739722013.3302837NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906050017070   0   1244141224604306lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2128                                                        LOCATIONMANAGER          SLIR                 919448010097   MSISDN  ASC   919448010097   1   SYSTEM FAILURE                                    1244141224604306less      919448010097        124414                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906050017110   0   1244141227460308lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2128                                                        LOCATIONMANAGER          SLIR                 919449838266   MSISDN  ASC   919448010098   1   SYSTEM FAILURE                                    1244141227460308less      919449838266   124414                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  

20090605140148        1204702370366140lessrv3                                     RTMS                          0                                                           TRACKING                 tlrep                                                            0   SUCCESS                                                                                         1                                                                                                                                                                                                                                                                                                                                     WGS84  
200906051402100   0   1195202147789210lessrv3       RTMS                          RTMS                                                                                      LOCATIONMANAGER          SLIR                 919446001620   MSISDN  ASC   919446001620   526 INACTIVE SUBSCRIBER                               1195202147789210less                          124419                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906051402100   0   1195202147789210lessrv3       RTMS                          RTMS                                                                                      LOCATIONMANAGER          SLIR                 919446001618   MSISDN  ASC   919446001618   526 INACTIVE SUBSCRIBER                               1195202147789210less                          124419                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906051402100   0   1195202147789210lessrv3       RTMS                          RTMS                                                                                      LOCATIONMANAGER          SLIR                 919446001617   MSISDN  ASC   919446001617   526 INACTIVE SUBSCRIBER                               1195202147789210less                          124419                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84

Jag behöver skript göra följande
1. Det måste filtrera poster baserade på $ 4 och $ 6 (dvs $ 4 \u003d\u003d BSNLSERVICE1 och $ 6 \u003d\u003d 2128) och räkna den totala posterna för dagen (20090605 *)


OUTPUT KRÄVS:
BSNLSERVICE1 2128 \u003d\u003d 3


2. Det måste filtrera poster baserade på $ 4 och $ 6 (dvs $ 4 \u003d\u003d BSNLSERVICE1 och $ 6 \u003d\u003d 2128) och räkna den totala posterna för dagen (20090605 *) och som grund $ 14 (dvs framgång UNDERLÅTELSE)


OUTPUT KRÄVS:
BSNLSERVICE1 2128 FRAMGÅNG \u003d\u003d 1
BSNLSERVICE1 2128 systemfel \u003d\u003d 2


3. Det måste filtrera poster baserade på $ 4 och $ 6 (dvs $ 4 \u003d\u003d BSNLSERVICE1 och $ 6 \u003d\u003d 2128), som grund $ 9 (dvs 919448010098, 919446001618) och räkna de sammanlagda posterna för dagen (20090605 *) för varje $ 9


OUTPUT KRÄVS:
919449838266 2
919448010097 1


produktionen bör vara av $ 4 \u003d\u003d BSNLSERVICE1 och $ 6 \u003d\u003d 2128 bara .. annat ($ 4 \u003d\u003d RTMS) är inte nödvändigt.

Hjälp mig pls

Senast redigerad av aemunathan; 06-05-2009 vid 09:33..
  #2 (permalänk)  
Old 06-05-2009
panyam panyam is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2008
Inlägg: 474
ungefär så här kan du prova:
Kod:
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }'  file_name.txt
återstår också nästan desamma. bara lite ändringar i skriptet behövs.
  #3 (permalänk)  
Old 06-05-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.308
Prova detta:

Kod:
awk -v day="20090605" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
  s1++;a[$14]++;b[$9]++
}
END{
  print serv,val, "=" s1 "\n"
  print serv,val, a["SUCCESS"]
  print serv,val, a["SYSTEM"] "\n"
  for(i in b){print i, b[i]} 
}' file
Hälsningar
  #4 (permalänk)  
Old 06-05-2009
aemunathan aemunathan is offline
Registered User
  
 

Join Date: maj 2008
Inlägg: 75
Hej panyam och Franklin

Jag följde den metod som föreslagits av panyam dess att ge användbara resultat.

här det går som i den ordning som jag begärde.

Kod:
1.
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }' 20090604*

2. 

awk '$4=="BSNLSERVICE1"&&$6=="2128"{ b[$14]++}  END {for(i in b){print i, b[i]}  }' 20090604*

3.
awk '$4=="BSNLSERVICE1"&&$6=="2128"{ b[$9]++}  END {for(i in b){print i, b[i]}  }' 20090604*
en sak som jag måste veta om det eventuellt kommer att dra filename från dag kommando.

egentligen behöver jag för att schemalägga det varje kväll vid 2:00 och jag måste dra filnamnet från dagen kommandot

kan ta exemplet
ikväll 2:00 den ouput av
Kod:
date +'%Y%m%d'
är 20090606
Jag måste ge filnamn som 20090605 * i filnamnet del av awk ...


och Franklin .... jag använde det här sättet
Kod:
#!/usr/xpg4/bin/awk 
awk -v day="20090605" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
  s1++;a[$14]++;b[$9]++
}
END{
  print serv,val, "=" s1 "\n"
  print serv,val, a["SUCCESS"]
  print serv,val, a["SYSTEM"] "\n"
  for(i in b){print i, b[i]} 
}' 200906051859
och fick svaret som
Citat:
. / reconcil.sh
/ usr/xpg4/bin/awk: syntaxfel sammanhang är:
>>>. / <<<
thank u
  #5 (permalänk)  
Old 06-05-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.308
För att få den dag då går du kan använda datecalc manus av Perderabo.
Placera skriptet i samma katalog av ditt manus med namnet datecalc och göra den körbar:

dagar förflutit mellan 2 datum

Ditt skript bör utseende:

Kod:
#!/bin/ksh

dat=$(./datecalc -a $(date +"%Y %m %d") - 1)

day=$(/usr/xpg4/bin/awk -v d="$dat" 'BEGIN {split(d,a," ");day=sprintf("%s%02s%02s",a[1],a[2],a[3]);print day}')

/usr/xpg4/bin/awk -v d="$day" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
  s1++;a[$14]++;b[$9]++
}
END{
  print "Filename: " FILENAME "\n"
  print serv,val, "=" s1 "\n"
  print serv,val, a["SUCCESS"]
  print serv,val, a["SYSTEM"] "\n"
  for(i in b){print i, b[i]} 
}' $day*
Bits Awarded / belasta Franklin52 för det här inlägget
Datum Användare Kommentera Belopp
06-06-2009 aemunathan Mycket arbete 50.000
  #6 (permalänk)  
Old 06-06-2009
aemunathan aemunathan is offline
Registered User
  
 

Join Date: maj 2008
Inlägg: 75
Hej

Tack mannen ... det trevligt att se resultatet ...

Jag behöver ett mer info. faktiskt är att använda sqlloader sätta in resultatet i en tabell. Här vill jag skriva ut föregående dag och i DD-MÅN-ÅÅÅÅ format

Jag försökte på detta sätt
Kod:
#!/bin/ksh

dat=$(./datecalc -a $(date +"%Y %m %d") - 1)

da_te=$(date +'%d')

da=$(($da_te-1))

mon=$(date +'%b')

year=$(date +'%Y')

host=$(hostname)

day=$(/usr/xpg4/bin/awk -v d="$dat" 'BEGIN {split(d,a," ");day=sprintf("%s%02s%02s",a[1],a[2],a[3]);print day}')

/usr/xpg4/bin/awk -v d="$day" -v serv="BSNLSERVICE1" -v val="2128"  -v daet="$(($da)-($mon)-($year))" -v ho="$host"'
$1~day && $4==serv && $6==val {
  s1++
}
END{
  print daet, host,s1 
}' $day*
Hjälp mig! rapporten är från föregående dag så jag måste använda den tidigare tidpunkt under utskrift.
Tack på förhand

Senast redigerad av aemunathan; 06-07-2009 vid 02:36.. Orsak: en mer krav !!!!!!
Reply

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 01:35.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0