[alex@goku]$ cat elenco | xargs -I {} echo -n ",\'{}\'" | xargs xargs: argument line too long xargs: echo: terminated by signal 13 [alex@goku]$ wc -l elenco 9144 elenco
Ho modificato la procedura e ora dovrebbe funzionare anche con un numero elevatissimo di righe (aspetto i vostri commenti). In particolare ho utilizzato il comando sed per inserire all’inizio e alla fine di ogni riga un singolo apice e poi ho semplicemente stampato ogni riga usando l’opzione -n di echo che non stampa il ritorno a capo; quindi la colonna viene trasformata in un’unica riga. Ho riportato il time delle diverse metologie e si vede che il risultato ottenuto con il sed è il migliore.
[alex@goku]$ time for i in $(cat elenco | sed 's/^/'\\\''/' | sed 's/$/'\\\','/'); do echo -n $i; done | sed 's/,$//' real m0.858s user 0m0.470s sys 0m0.060s [alex@goku]$ time cat elenco | xargs -I{} echo -n ",#{}#" | tr "#" "'" | cut -c 2- real 0m24.296s user 0m2.960s sys 0m18.007s [alex@goku]$ time cat elenco | xargs -I {} echo ",\'{}\'" | xargs | cut -c 2- | tr -d ' ' real 0m25.561s user 0m3.200s sys 0m22.107s
[ad name=”HTML”]
Ho trovato un interessante articolo sulla trasposizione di righe e colonne. Ecco il link: http://www.thelinuxrain.com/articles/transposing-rows-and-columns-3-methods