The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

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
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

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 08-30-2007
baghera baghera is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 23
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
#############################
  #2 (permalink)  
Old 08-30-2007
ranj @ CHN ranj@chn is offline Forum Advisor  
Spelen met Ubuntu Now!
  
 

Join Datum: oktober 2005
Locatie: Chennai
Posts: 365
gaat dat in zijn werk?

Code:
awk -f temp.awk tempfile
waar temp.awk is
Code:
{ for(i=1;i<=NF;i++) { sum[i]+=$i } }
END { for (i in sum) {printf("%f\t", sum[i]/NR) } }
Citaat:
Btw, de tweede kolom moet niet 6,5 maar 4,33

Laatst gewijzigd door ranj @ CHN; op 08.30.2007 10:41.. Reden: commentaar toevoegen
  #3 (permalink)  
Old 08-30-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Locatie: Boston, MA
Berichten: 5.119
Citaat:
Oorspronkelijk geplaatst door ranj @ CHN View Post
Code:
awk -f temp.awk tempfile
waar temp.awk is
Code:
{ for(i=1;i<=NF;i++) { sum[i]+=$i } }
END { for (i in sum) {printf("%f\t", sum[i]/NR) } }
ranj,
wanneer iterating door middel van een array 'bedrag' met de index van de 'i', de volgorde van het stopcriterium is indeterminant, dus niet van uitgaan dat 'i' gaan van'1 'naar' NF '.
  #4 (permalink)  
Old 08-30-2007
ranj @ CHN ranj@chn is offline Forum Advisor  
Spelen met Ubuntu Now!
  
 

Join Datum: oktober 2005
Locatie: Chennai
Posts: 365
Smile op het einde?

I didnt weten. Dus je bedoelt de waarden kunnen worden afgedrukt in een bestelling? Houdt dat in het achterhoofd!
  #5 (permalink)  
Old 08-30-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Locatie: Boston, MA
Berichten: 5.119
Citaat:
Oorspronkelijk geplaatst door baghera View Post
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
#############################
baghera,
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.
  #6 (permalink)  
Old 08-30-2007
baghera baghera is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 23
Citaat:
Oorspronkelijk geplaatst door vgersh99 View Post
baghera,
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.
Het verschil tussen nu en dan is dat ik het nodig om een bash / bourne script. De vorige thread is voor een awk-programma. Maar ik moest veranderen in een bash / bourne shell script. Om eerlijk te zijn, ik weet niet het verschil echt, maar ik heb uggly kijkt uit mijn vriend toen ik liet hem de awk-programma dat een aantal van u heeft mij geholpen met. Dus ik weer naar bourne / bash.

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..
  #7 (permalink)  
Old 08-31-2007
baghera baghera is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 23
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
Dit werkt goed voor mij. En om de kolommen ik gebruik:

Code:
data='cat myList | xargs -n $2'
Closed Thread

Bladwijzers

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 10:36 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