The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Sed Er is een oplossing voor dit? racbern Programmeren en Shell Scripting 1 03-13-2008 11:31
noodzaak oplossing voor scripting kkc Programmeren en Shell Scripting 14 01-31-2008 09:17 PM
Zon en backup oplossing Jshwon SUN Solaris 1 10-23-2007 01:54 PM
Grep oplossing Amruta Pitkar Programmeren en Shell Scripting 3 05-03-2007 03:57
Linux als een NAS-oplossing? kjbaumann Linux 1 08-30-2006 01:09 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 Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-06-2008
timj123 timj123 is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 80
Is er een awk oplossing voor dit?

Ik schrijf een awk script dat verzamelt bepaalde gegevens uit bepaalde gebieden. Ik moest een awk oplossing voor dit, want het zal later een functie in het script.

Ik heb de volgende gegevens die ik nodig uitgang op een regel, maar record omspant heel multilple lijnen en documenten niet "samen". Zo zou tom hieronder record "Tom" hieronder is op 4 verschillende lijnen, maar ik hoeft alleen de gegevens van 2 van de lijnen, ik zal ook moeten dezelfde info voor Pat, Tim, en tad, of wie anders heeft een record als de onderstaande indeling.

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
Ik moest de volgende 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
Is er een awk oplossing voor dit?

dank bij voorbaat voor dit, omdat ik denk dat dit een moeilijke kwestie.
  #2 (permalink)  
Old 03-11-2008
timj123 timj123 is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 80
Citaat:
Oorspronkelijk geplaatst door timj123 View Post
Ik schrijf een awk script dat verzamelt bepaalde gegevens uit bepaalde gebieden. Ik moest een awk oplossing voor dit, want het zal later een functie in het script.

Ik heb de volgende gegevens die ik nodig uitgang op een regel, maar record omspant heel multilple lijnen en documenten niet "samen". Zo zou tom hieronder record "Tom" hieronder is op 4 verschillende lijnen, maar ik hoeft alleen de gegevens van 2 van de lijnen, ik zal ook moeten dezelfde info voor Pat, Tim, en tad, of wie anders heeft een record als de onderstaande indeling.

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
Ik moest de volgende 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
Is er een awk oplossing voor dit?

dank bij voorbaat voor dit, omdat ik denk dat dit een moeilijke kwestie.
alle hulp die er voor dit, alstublieft?
  #3 (permalink)  
Old 03-12-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.892
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
U kunt meer gebruikers in het patroon: Tim | tad | pat enz.
Gebruik nawk of / usr/xpg4/bin/awk op Solaris.
  #4 (permalink)  
Old 03-13-2008
timj123 timj123 is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 80
Citaat:
Oorspronkelijk geplaatst door 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
U kunt meer gebruikers in het patroon: Tim | tad | pat enz.
Gebruik nawk of / usr/xpg4/bin/awk op Solaris.
Dit werkt fantastisch, ik waardeer de hulp op dit, maar wat als ik wilde Kortom, kolommen 07q4 en 07q1 en vervolgens gesteld dat de waarde op het einde van de printf verklaring? Na problemen met dat deel. Kunt u mij helpen?
  #5 (permalink)  
Old 03-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.892
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
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 80
OK, ik voel me stom nu.
Nogmaals bedankt soo veel op te slaan me over een week een waarde van frustratie.
Ik realiseer ik moeten kijken naar zaken als deze uit een andere hoek.
  #7 (permalink)  
Old 03-13-2008
aspect_p aspect_p is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2008
Posts: 13
Citaat:
Oorspronkelijk geplaatst door 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
Kun je een beetje verder in de beschrijving van de methoden die worden gebruikt awk op het script, im sorry als een last, maar zoiets als dit kan een HUGE ace in mijn arsenaal van shell scripting.
Closed Thread

Bladwijzers

Labels
solaris

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 08:27 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0