2013-06-13 12 views

risposta

25
$ pr -mts' ' file1 file2 
1 1 6 
2 3 7 
3 4 9 

$ paste -d' ' file1 file2 
1 1 6 
2 3 7 
3 4 9 
+1

Il 'paste' di base senza parametro' -d' dovrebbe funzionare, suppongo. – fedorqui

+2

@fedorqui il delimitatore predefinito con 'incolla' è una scheda. –

+0

Aaaah che vedo. +1 per questo! – fedorqui

6
awk 'NR==FNR{a[NR]=$0;next}{print a[FNR],$0}' file1 file2 

Nota: Lavoreranno con i file di uguale lunghezza. Se le lunghezze dei file 'sono diverse, vai con la soluzione sudo_O's.


Solo per il gusto di farlo, qui è un comando awk che penso dovrebbe simulare paste. Puramente per divertimento, però, se fossi in te sarei ancora andare con sudo_O's soluzione (o non può essere!)

awk 'NR==FNR{a[++y]=$0;next}{b[++x]=$0} 
END{z=x>y?x:y;while(++i<=z){print a[i],b[i]}}' file1 file2 
+0

+1 per la risposta awk pure. Ora sei 10k utente! – fedorqui

+0

Risposta davvero interessante. Ti dispiacerebbe spiegare come funziona? Non capisco perché sia ​​"a [NR]" prima e poi a "a [FNR]". – abalter

1

Una pura soluzione può essere:

exec 3<twofile 
while read x; do read -u 3 y; echo $x $y; done <onefile 

Infiles:

cat >onefile <<XXX 
1 1 
2 3 
3 4 
XXX 
cat >twofile <<XXX 
6 
7 
9 
XXX 

uscita:

1 1 6 
2 3 7 
3 4 9 
Problemi correlati