2013-06-13 7 views

Odpowiedz

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

Podstawowe 'paste' bez parametru' -d' powinno działać, jak sądzę. – fedorqui

+2

@fedorqui domyślny separator z 'wklejką' to zakładka. –

+0

Aaaah Widzę. +1 za to! – fedorqui

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

Uwaga: Będzie pracować z plikami z tej samej długości. Jeśli długości plików są różne, przejdź do rozwiązania sudo_O's.


Tylko do cholery to, tutaj jest komenda awk że myślę, że powinien symulować paste. Czysto dla zabawy, chociaż, gdybym był tobą, nadal iść z sudo_O's roztworze (lub może nie być!)

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 dla odpowiedzi na awk również. Teraz jesteś 10k użytkownikiem! – fedorqui

+0

Całkiem fajna odpowiedź. Czy mógłbyś wyjaśnić, jak to działa? Nie rozumiem, dlaczego to najpierw "NR", a potem "[FNR]". – abalter

1

Czysty rozwiązanie może być:

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 

Wyjście:

1 1 6 
2 3 7 
3 4 9