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
Er det en Sed løsning på dette? racbern Shell programmering og Skripting 1 03-13-2008 11:31
behov for skripting kkc Shell programmering og Skripting 14 01-31-2008 09:17
Sun og backup løsning Jshwon Sun Solaris 1 10-23-2007 01:54
Grep løsning Amruta Pitkar Shell programmering og Skripting 3 05-03-2007 03:57
Linux som en NAS-løsning? kjbaumann Linux 1 08-30-2006 01:09

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 03-06-2008
timj123 timj123 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 80
Er det en awk løsning på dette?

Jeg skriver en awk-skript som samler visse data fra enkelte felt. Jeg trengte en awk løsning på dette, fordi det vil senere bli en funksjon i manuset.

Jeg har følgende data som jeg trenger produksjon på én linje, men posten seg over multilple og poster er ikke "sammen". Eksempel vil være tom under posten "Tom" nedenfor er på 4 forskjellige linjer, men jeg trenger bare data fra 2 av linjene, vil jeg også trenger samme info for pat, Tim og TAD, eller hvem andre har en plate som format.


Code:
2008   fl01   LAC   2589   polk   doal
xx 2008q1 mx
     sect 25698541

     Sales 08 Dept group

        lead1    2008q1
        tom
        pat
        tim
        tad

        lead1  07q4   07q3   07q2   07q1   06q4   06q3   jan
        tom    0      96     0      3312   3624   0      312
        pat    0      17     0      0      30     0      30
        tim    357    03     04     25     3020   3120   20
        tad    1734   0      0      0      5213   5213   0

        lead1  feb    mar    apr    may    jun    jul    aug
        tom    0      96     0      0      0      0      0
        pat    0      17     0      0      0      0      0
        tim    357    23     5      7      8      14     70
        tad    1734   0      0      0      0      0      0

        lead1  sept   oct    nov    dec
        tom    0      0      460    92
        pat    0      0      240    0
        tim    0      21     1800   0
        tad    0      0      672    0

2008   fl01  LAC   2589    polk   doal
yy 2008q1 mx
     sect 2569852

     Sales 08 Dept group

Jeg trengte følgende output:


Code:
lead1   07q4    07q1    06q4    06q3    sept    oct     nov
tim	357	25	3020	3120	0	21	1800 
tad	1734	0	5213	5213	0	0	672

Er det en awk løsning på dette?

takk på forhånd for dette, fordi jeg tror dette er en vanskelig en.
  #2 (permalink)  
Old 03-11-2008
timj123 timj123 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 80
Sitat:
Originally Posted by timj123 View Post
Jeg skriver en awk-skript som samler visse data fra enkelte felt. Jeg trengte en awk løsning på dette, fordi det vil senere bli en funksjon i manuset.

Jeg har følgende data som jeg trenger produksjon på én linje, men posten seg over multilple og poster er ikke "sammen". Eksempel vil være tom under posten "Tom" nedenfor er på 4 forskjellige linjer, men jeg trenger bare data fra 2 av linjene, vil jeg også trenger samme info for pat, Tim og TAD, eller hvem andre har en plate som format.


Code:
2008   fl01   LAC   2589   polk   doal
xx 2008q1 mx
     sect 25698541

     Sales 08 Dept group

        lead1    2008q1
        tom
        pat
        tim
        tad

        lead1  07q4   07q3   07q2   07q1   06q4   06q3   jan
        tom    0      96     0      3312   3624   0      312
        pat    0      17     0      0      30     0      30
        tim    357    03     04     25     3020   3120   20
        tad    1734   0      0      0      5213   5213   0

        lead1  feb    mar    apr    may    jun    jul    aug
        tom    0      96     0      0      0      0      0
        pat    0      17     0      0      0      0      0
        tim    357    23     5      7      8      14     70
        tad    1734   0      0      0      0      0      0

        lead1  sept   oct    nov    dec
        tom    0      0      460    92
        pat    0      0      240    0
        tim    0      21     1800   0
        tad    0      0      672    0

2008   fl01  LAC   2589    polk   doal
yy 2008q1 mx
     sect 2569852

     Sales 08 Dept group

Jeg trengte følgende output:


Code:
lead1   07q4    07q1    06q4    06q3    sept    oct     nov
tim	357	25	3020	3120	0	21	1800 
tad	1734	0	5213	5213	0	0	672

Er det en awk løsning på dette?

takk på forhånd for dette, fordi jeg tror dette er en vanskelig en.
hjelp der ute for dette, kan du?
  #3 (permalink)  
Old 03-12-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
stoffmisbruker
  
 

Bli Date: Jan 2007
Beliggenhet: Варна, България / Milano, Italia
Innlegg: 2928

Code:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1)
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\n", p[$1], $2, $3, $4 
 }
}' users="tim|tad" file

Du kan legge til flere brukere i mønsteret: Tim | TAD | klapp etc.
Bruk nawk eller / usr/xpg4/bin/awk på Solaris.
  #4 (permalink)  
Old 03-13-2008
timj123 timj123 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 80
Sitat:
Originally Posted by radoulov View Post
Code:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1)
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\n", p[$1], $2, $3, $4 
 }
}' users="tim|tad" file

Du kan legge til flere brukere i mønsteret: Tim | TAD | klapp etc.
Bruk nawk eller / usr/xpg4/bin/awk på Solaris.
Dette fungerer flott, jeg virkelig setter pris på hjelp til dette, men hva om jeg ønsket å oppsummere, kolonner 07q4 og 07q1, og deretter sette denne verdien ved utgangen av printf statement? Har problemer med at deler. Kan du hjelpe meg?
  #5 (permalink)  
Old 03-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
stoffmisbruker
  
 

Bli Date: Jan 2007
Beliggenhet: Варна, България / Milano, Italia
Innlegg: 2928

Code:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov     tot" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1) {
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
  t[$1] = $2 + $5
}
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\t%d\n", p[$1], $2, $3, $4, t[$1] 
 }
}' users="tim|tad" file

  #6 (permalink)  
Old 03-13-2008
timj123 timj123 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 80
OK, jeg føler meg dum nå.
Thanks again soo mye på lagring meg om en uke igjen av frustrasjon.
Jeg innser at jeg må til å løse problemer som dette fra en annen vinkel.
  #7 (permalink)  
Old 03-13-2008
aspect_p aspect_p is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 13
Sitat:
Originally Posted by radoulov View Post
Code:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov     tot" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1) {
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
  t[$1] = $2 + $5
}
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\t%d\n", p[$1], $2, $3, $4, t[$1] 
 }
}' users="tim|tad" file
Kan du gå litt lenger i å beskrive awk metoder brukes på manuset, im sorry for å være en plage, men noe sånt som dette kan være et enormt ess i mitt arsenal av shell scripting.
Closed Thread

Hugseliste

Tags
solaris

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 08:55.


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