Wie drucke ich ein Trennzeichen für alle Felder im Join-Dienstprogramm?

366
Xiè Jìléi

Zum Beispiel:

Datei A:

Tom:black Lily:pink 

Datei b:

Tom:big Kate:small 

Und das Ergebnis:

join -t: a1 a b 

Habe:

Tom:black:big Lily:pink 

Was ich aber will ist:

Tom:black:big Lily::pink 

dh der Doppelpunkt in der letzten Zeile fehlt, eine Idee?

2

2 Antworten auf die Frage

1
icyrock.com

Dieses Verhalten wird erwartet pro man join:

 -a FILENUM print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2 

Sie können es in zwei Durchgängen wie folgt machen:

join -t: a b && join -t: -v1 a b|sed 's/:/::/' 

oder etwas in diese Richtung.

1
Dennis Williamson

Ich würde denken, Sie möchten, dass die Felder in einer konsistenten Position sind. Wenn ja, dann würde einer von ihnen nur mit einem Aufruf von joinund nein funktionieren sed:

$ join -t: -a1 -o 1.1,1.2,2.2 a b Tom:black:big Lily:pink: $ join -t: -a1 -o 1.1,2.2,1.2 a b Tom:big:black Lily::pink