![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
| while lus in while lus | panknil | Programmeren en Shell Scripting | 0 | 01-07-2008 12:49 |
| Lus | xramm | HP-UX | 3 | 10-10-2007 02:20 PM |
| Terwijl Loop | hemangjani | Programmeren en Shell Scripting | 2 | 11-02-2006 11:01 |
| lus | munnabhai1 | Programmeren en Shell Scripting | 3 | 04-06-2006 02:30 PM |
| hoe je de vergelijkbare functie in while lus of lus | trynew | Programmeren en Shell Scripting | 3 | 06-17-2002 11:09 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
While-lus met awk
How to make a while-lus met awk.
Hiermee kunt zeggen ik heb een variabel aantal kolommen: 1 4 3 2 4 4 3 5 3 Nu wil ik aan toevoegen alle elementen van kolom 1, 2 en 3 en vervolgens delen door het aantal elementen in elk. kolommen \u003d het aantal kolommen die wordt gegeven als een argument om mijn script i \u003d de kolom we zijn voegen voor het moment dit is een pseudo-code voor wat ik wil worden gedaan: terwijl [kolommen> 0] doen awk '(som + \u003d $ i) END (print som / NR "\ t")' i + + kolom -- gedaan Dus als het eindproduct uitgevoerd resultaat zal zijn: 2 6,5 3,333333 Maar krijg ik niet mijn while lus te functioneren. Please help me. Dit is mijn code: ############################# terwijl [ "$ kolommen"-gt 0] doen awk_cmd \u003d `awk-vi \u003d $ 1 '(som + \u003d $ i) END (print som / NR)'` echo "$ data | $ awk_cmd" i \u003d `expr $ i + 1" kolommen \u003d `expr $ kolommen - 1" gedaan ############################# |
|
||||
|
gaat dat in zijn werk?
Code:
awk -f temp.awk tempfile Code:
{ for(i=1;i<=NF;i++) { sum[i]+=$i } }
END { for (i in sum) {printf("%f\t", sum[i]/NR) } }
Citaat:
Laatst gewijzigd door ranj @ CHN; op 08.30.2007 10:41.. Reden: commentaar toevoegen |
|
|||||
|
Citaat:
Ik denk dat we al door middel van deze oefening een keer in een van de vorige threads. Wat is het precies dat je niet probeert te doen anders? Als je probeert te berekenen van de gemiddelde waarde per kolom voor alle rijen - deze oplossing is ook bedoeld als onderdeel van de vorige draad. Proberen te begrijpen van de vorige oplossing en / of aanpassen aan uw 'nieuwe' [???] eis. |
|
||||
|
Citaat:
Dus mijn script tot nu toe is: cat $ 1 | grep "resultaten" | grep "get nummers" | xargs-n $ 2 Het is iets verder gevorderd dan het commando hierboven, maar dit is alleen zo krijg je de hele afbeelding. Het produceert kolommen met waarden uit bestanden met de naam $ 1 en de nummers van de kolommen worden bepaald door $ 2. Nu, aangezien $ 2 is een variabele Ik weet niet hoeveel kolommen er zal worden. Het is niet te veel, laten we zeggen rond 2.10 zou moeten volstaan. Ik moet, zoals ik vorige verklaard door elke kolom toevoegen en vervolgens te delen met het aantal elementen in elke kolom. Dus als het uitgangssignaal van de volgende commando hierboven is: 1 4 2 5 3 6 4 7 5 8 Het resultaat zou moeten zijn: 3 6 Wat is het gemiddelde van elk van de kolommen. Ik heb iets als dit, maar het lijkt niet te werken, terwijl [$ j> 0] doen cat lijst | awk '(som + \u003d $ i) END (print som / NR)' i \u003d $ [$ i +1] j \u003d $ [$ j-1] gedaan awk lijkt te hebben probleem met $ i. Maar ik moet dit als een variabele, maar awk zegt: awk: illegale gebied $ (), de naam 'i' input record nummer 1, dossier bron lijn nummer 1 Laatst gewijzigd door baghera; op 08.30.2007 02:45 PM.. |
|
||||
|
Ik het probleem:
Code:
i="1"
j=$2
while [ "$j" -gt 0 ]
do
echo "$data" | awk -v k=$i '{sum+=$k} END {print sum/NR}'
i=$[$i+1]
j=$[$j-1]
done
Code:
data='cat myList | xargs -n $2' |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|