Supponiamo di avere questi due file:tubo un sacco di file per stdin, estrarre prime colonne, poi si combinano quelle in un nuovo file
$ cat ABC.txt
ABC DEF
$ cat PQR.txt
PQR XTZ
E vogliamo formare un nuovo file con il 1 ° colonna di ogni file. Ciò può essere ottenuto da:
$ paste -d ' ' <(cut -d ' ' -f 1 ABC.txt) <(cut -d ' ' -f 1 PQR.txt)
ABC PQR
Ma io voglio usare questo con tonnellate di file in entrata, non solo abc.txt e PQR.TXT, ma molti di loro. Come possiamo generalizzare questa situazione per passare ogni file nella collezione a tagliato e quindi passare tutte le uscite a incolla (so che questo può essere fatto meglio con awk ma voglio sapere come risolvere questo usando questo approccio).
Modifica 1
Ho scoperto un modo sporco sporca di fare questo:
$ str=''; for i in *.txt; \
do str="${str} <(cut -d ' ' -f 1 ${i})"; \
done ; \
str="paste -d ' ' $str"; \
eval $str
Ma, per favore, liberare la mia anima con una risposta che non comporta andare a Computer Science Hell.
Edit 2
Ogni file può avere n righe, se questo conta.
hai una sola riga per ogni file? – karakfa
No, ogni file ha n righe. – Dargor