NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Certe volte capita di non aver abbastanza memoria in un dispositivo da non aver a disposizione anche solo i comandi base della shell di linux, Ad esempio, se siete costretti ad utilizzare la shell sh non avrete a disposizione il comando paste, che consente di unire assieme le colonne di due o più file. In questo articolo vedremo come realizzare l'equivalente della funzione paste in linguaggio awk.

Per prima cosa creiamo un file che chiamiamo paste.awk ed andiamo ad inserirgli queste istruzioni:

FILENAME == ARGV[1] { one[FNR]=$1 }
FILENAME == ARGV[2] { two[FNR]=$1 }
FILENAME == ARGV[3] { three[FNR]=$1 }
FILENAME == ARGV[4] { four[FNR]=$1 }
FILENAME == ARGV[5] { five[FNR]=$1 }


END {
    for (i=1; i<=length(one); i++) {
        print one[i], two[i], three[i], four[i], five[i]
    }
}

Come potete notare, in questo esempio andiamo a passare come parametro (tramite linea di comando) 5 files. Se dovete utilizzare meno/più files, basta togliere/aggiungere una/più riga/he "FILENAME".

Infine per lanciare lo script eseguiremo questo comando dalla shell che salverà il risultato nel file "result":

awk -f paste.awk file1  file2  file3   file4   file5 > result