Calcolare la trasposta di una matrice

Archiviato in: calcolo — olaolaonline 6 giugno 2008 @ 11:51

Se abbiamo un file contenente dati in formati di matrice (numeri e stringhe)

1       2       3
4       5       6
7       8       9

possiamo ottenere la matrice trasposta, cioe’ lo scambio delle righe con le colonne, attraverso la sequenza di comandi

cat nomefile | awk ‘{for(j=1;j<=NF;j++){arr[j]=arr[j]" "$j}} END {for(i=1;i<=NF;i++) print arr[i]}’ | sed ’s/^\ //’

Il risultato sara’

1       4       7
2       5       8
3       6       9

Credits to jaduks

Calcoli matematici complessi nella shell

Archiviato in: calcolo — olaolaonline 16 novembre 2007 @ 18:21

Come noto la shell permette di effettuare solo operazioni matematiche basilari: la somma, la sottrazione, la moltiplicazione e la divisione. Quest’ultima peraltro restituira sempre la parte intera del risultato dell’operazione.
La sintassi da usare per fare i calcoli matematici e’

a=10
b=45
echo $(($a+37))
47
echo $(($a*$b))
450

Inoltre, se volete semplicemente incrementare una vriabile di una quantita’ fissa, esiste una sintassi simile al C

n=0
echo "n = $n"
n = 0
(( n += 1 ))
echo "n = $n"
n = 1

Ma se volessimo usare dei numeri con la virgola o fare dei calcoli piu’ complessi? In questo caso dovremmo fare uso dell’utility bc. In pratica basta passare a questa utility la stringa contenente l’operazione da effettuare

echo "2^8" | bc -l
256
echo "3.36*13.2" | bc -l
44.352
echo "c(0)" | bc -l
1.000

L’ultima operazione e’ il coseno di zero.
Non dimenticate l’opzione -l per attivare le librerie matematiche avanzate di bc.