2013-06-13 1 views

Antwort

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

Basic 'Paste' ohne' -d' Parameter sollte funktionieren, denke ich. – fedorqui

+2

@fedorqui das Standardtrennzeichen mit 'Einfügen' ist eine Registerkarte. –

+0

Aaaah ich sehe. +1 dafür! – fedorqui

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

Hinweis: Wird mit Dateien von gleicher Länge arbeiten. Wenn die Dateilängen unterschiedlich sind, gehen Sie mit sudo_O's Lösung.


nur für das Heck von ihm, hier ist ein awk Befehl, ich denke, sollte paste simulieren. obwohl rein zum Spaß, wenn ich Sie wäre, würde ich noch mit sudo_O's Lösung gehen (oder kann nicht sein!)

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 für awk als Antwort. Jetzt sind Sie 10k Benutzer! – fedorqui

+0

Ziemlich coole Antwort. Würde es Ihnen etwas ausmachen zu erklären, wie es funktioniert? Ich verstehe nicht, warum es zuerst 'a [NR]' und dann 'a [FNR]' ist. – abalter

1

Eine reine Lösung sein kann:

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 

Ausgang:

1 1 6 
2 3 7 
3 4 9