![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| ciclo while all'interno ciclo while | panknil | Shell scripting e di programmazione | 0 | 01-07-2008 12:49 PM |
| Per loop | xramm | HP-UX | 3 | 10-10-2007 03:20 PM |
| Mentre Loop | hemangjani | Shell scripting e di programmazione | 2 | 11-02-2006 11:01 AM |
| per il ciclo | munnabhai1 | Shell scripting e di programmazione | 3 | 04-06-2006 03:30 PM |
| come ottenere la funzione analoga a ciclo while loop o per | trynew | Shell scripting e di programmazione | 3 | 06-17-2002 12:09 PM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Mentre circuito con awk
Ciao, ho recentemente inviato in un altro thread iniziato da me
. Ma in uno sforzo per rendere più bello il mio script che ho pensato mentre abbout loop. Eseguire il mio script con il comando: sh script 4 numbers.txt E il mio script è simile a questo: Codice:
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
colonne: non trovato E non vedo il problema. Forse ci sono alcuni altri problemi con lo script come bene. Per favore mi illumini. |
|
||||
|
Ok ho fatto come lei ha detto:
Codice:
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: errore di sintassi vicino la linea 1 awk: salvataggio vicino fuori linea 1 2 2 1 1 1 1 1 1 | awk: errore di sintassi vicino la linea 1 awk: salvataggio vicino fuori linea 1 2 2 1 1 1 1 1 1 | awk: errore di sintassi vicino la linea 1 awk: salvataggio vicino fuori linea 1 2 2 1 1 1 1 1 1 | awk: errore di sintassi vicino la linea 1 awk: salvataggio vicino fuori linea 1 2 2 1 1 1 1 1 1 | Quello che voglio è che passa attraverso ogni colonna su ogni esecuzione in loop e stampe, mentre la corrispondente media. Ma ho davvero apprezzato l'aiuto, io sono stato in alcuni forum in cui si ottiene slammered perché, forse, domande stupide. |
|
|||||
|
Non è necessario il awk_cmd comando:
Codice:
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
Codice:
awk_cmd="awk -v i=$1 '{sum+=$i} END {print sum/NR}'"
echo "$data" | eval $awk_cmd
|
|
||||
|
Grazie Jean-Pierre, ora non ho ricevuto alcun errore. Ma l'uscita è strano.
Se ho l'elenco: 1 2 1 2 Ciò produrre: 1 2 1 2 Quindi, l'output dovrebbe essere il 1 e 2 (1 +1 / 2 e 2 +2 / 2), in questo modo: 1 2 Ma invece mi 2 2 C'è qualcosa che non va con il modo in cui io vado su questo problema. echo "$ data" | awk-VI \u003d $ 1 '(somma + \u003d $ i) END (print somma / NR)' C'è qualcosa di sbagliato con l'uso NR qui? Ma mettere un numero non sembra aiutare. Ho provato con 2, ma invece di NR (stessa lista di cui sopra), ma ancora ho: 2 2 C'è un problema con la divisione sto facendo? Modifica: Ho appena fatto eco dati e l'output è disponibile in una sola riga 1 2 1 2 è così probabilmente ha qualcosa a che fare con il mio problema. Ultima modifica da Baghera; al 08/28/2007 02:50 PM.. |
|
|||||
|
Io non capisco perché lei tranquilla tutte le necessità di codifica quando si può fare tutto in awk:
nawk-f bag.awk MyFile bag.awk: Codice:
{
for(i=1; i<=NF; i++)
sum[i] += $i
nf=NF
nr=NR
}
END {
for(i=1; i<=nf; i++)
print sum[i]/nr
}
Ultimo a cura di vgersh99; al 08/28/2007 03:14 PM.. |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|