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 03: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 03:30 PM
hoe je de vergelijkbare functie in while lus of lus trynew Programmeren en Shell Scripting 3 06-17-2002 12: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-28-2007
baghera baghera is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 23
While-lus met awk

Hoi, Ik heb onlangs geplaatst in een andere thread gestart door mij . Maar in een poging om mijn script mooier Ik heb eens nagedacht abbout terwijl loops.

Ik voer mijn script met de opdracht:

sh script 4 numbers.txt

En mijn script is als volgt:

Code:
data=`cat $2 | xargs -n $1`

#echo $data

columns=$1
i=1

while columns>0
do
	awk_cmd=`awk '{sum+=$i} END {print "\n" sum/NR}'`
   	echo "$data | $awk_cmd"
	i=`expr $i + 1`
	columns=`expr $columns - 1`
done
Het hele punt van het script is om een lijst ($ 2) en de productie van $ 1 aantallen kolommen en dan print het gemiddelde van elke kolom. Maar ik krijg een foutmelding bij het uitvoeren van het script:

kolommen: niet gevonden

En ik zie niet het probleem. Misschien zijn er een aantal andere problemen met het script als goed. Gelieve verlichten mij.
  #2 (permalink)  
Old 08-28-2007
robotronic's Avatar
robotronic robotronic is offline Forum Advisor  
Kan ik met waanzin?
  
 

Join Date: april 2002
Locatie: Italië
Posts: 370
Ten eerste, de test staat is verkeerd. Gebruik deze:

Code:
while [ "$columns" -gt 0 ]
Ten tweede, als u wilt dat om de "$ i" waarde aan awk probeer dit:

Code:
awk_cmd=`awk -v i=$i '{sum+=i} END {print "\n" sum/NR}'`
  #3 (permalink)  
Old 08-28-2007
baghera baghera is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 23
Ok ik heb zoals je zei:

Code:
data=`cat $2 | xargs -n $1`

#echo $data

columns=$1
i=1
echo $columns

while [ "$columns" -gt 0 ]
do
	awk_cmd=`awk -v i=$1 '{sum+=$i} END {print sum/NR}'`
   	echo "$data | $awk_cmd"
	i=`expr $i + 1`
	columns=`expr $columns - 1`
done
Maar dan krijg ik dit soort fout:

>> Sh reader4 4 testfil.txt
awk: syntaxisfout buurt van lijn 1
awk: bail out buurt van lijn 1
2 2 1 1
1 1 1 1 |
awk: syntaxisfout buurt van lijn 1
awk: bail out buurt van lijn 1
2 2 1 1
1 1 1 1 |
awk: syntaxisfout buurt van lijn 1
awk: bail out buurt van lijn 1
2 2 1 1
1 1 1 1 |
awk: syntaxisfout buurt van lijn 1
awk: bail out buurt van lijn 1
2 2 1 1
1 1 1 1 |

Wat ik wil is dat het gaat door elke kolom op elke run in de while lus en drukt de overeenkomstige gemiddelde. Maar ik waardeer het echt helpen, heb ik tot op zekere fora waar je slammered want misschien domme vragen.
  #4 (permalink)  
Old 08-28-2007
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.423
U hoeft niet de awk_cmd commando:
Code:
data=`cat $2 | xargs -n $1`

#echo $data

columns=$1
i=1
echo $columns

while [ "$columns" -gt 0 ]
do
   	echo "$data" | awk -v i=$1 '{sum+=$i} END {print sum/NR}'
	i=`expr $i + 1`
	columns=`expr $columns - 1`
done
Als u wilt bewaren, moet u de eval commando:
Code:
	awk_cmd="awk -v i=$1 '{sum+=$i} END {print sum/NR}'"
	echo "$data" | eval $awk_cmd
Jean-Pierre.
  #5 (permalink)  
Old 08-28-2007
baghera baghera is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 23
Dankzij Jean-Pierre, nu krijg ik niet alle fouten. Maar de output is raar.

Als ik de lijst:

1
2
1
2

Dit zou de productie van:
1 2
1 2

Dus de output moet worden 1 en 2 (1 +1 / 2 en 2 +2 / 2), als volgt:
1
2

Maar ik krijg

2
2

Er is iets mis met de manier waarop ik over dit probleem.

echo "$ data" | awk-vi \u003d $ 1 '(som + \u003d $ i) END (print som / NR)'

Is er iets mis met het gebruik van NM hier? Maar dat een aantal er niet lijkt te helpen. Ik heb het geprobeerd met 2 in plaats van NM maar (dezelfde lijst als hierboven), maar nog steeds krijg ik:

2
2

Is er een probleem met de verdeling I'm making?

Edit: Ik heb net terug van gegevens en de output wordt geleverd in een lijn 1 2 1 2 dus is waarschijnlijk iets te maken heeft met mijn probleem.

Laatst gewijzigd door baghera; op 08.28.2007 02:50 PM..
  #6 (permalink)  
Old 08-28-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Locatie: Boston, MA
Berichten: 5.122
Ik ben niet rustig te begrijpen waarom je moet alle codering wanneer u kunt het allemaal in awk:

nawk-f bag.awk myfile

bag.awk:
Code:
{
   for(i=1; i<=NF; i++)
       sum[i] += $i
   nf=NF
   nr=NR
}

END {
    for(i=1; i<=nf; i++)
        print sum[i]/nr
}

Laatst gewijzigd door vgersh99; op 08.28.2007 03:14 PM..
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 08:05.


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