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]"\t"$j}} END {for(i in arr) print arr[i]}’ | sed ’s/^\t//’
Il risultato sara’
1 4 7
2 5 8
3 6 9
Credits to jaduks
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.