![]() |
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 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 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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
kolommen: niet gevonden En ik zie niet het probleem. Misschien zijn er een aantal andere problemen met het script als goed. Gelieve verlichten mij. |
|
||||
|
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
>> 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. |
|
||||
|
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.. |
|
|||||
|
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.. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|