Shell-Befehl 'Join' funktioniert nicht

659
Shabhri Naresh

Ich füge zwei sehr einfache sortierte Dateien zusammen, aber aus einem seltsamen Grund funktioniert es nicht. f1.txt:

f1 abc f2 mno f3 pqr 

f2.txt:

abc a1 mno a2 pqr a3 

Befehl:

join -t '\t' f1.txt f2.txt -1 2 -2 1 > f3.txt 

Zu Ihrer Information: In den Dateien f1, f2 ist der Platz ein Tabulator. Dies erzeugt jedoch eine leere f3.txt. Warum passiert dies? Dies ist so ein einfaches Beispiel für eine Verbindung, richtig?

2

1 Antwort auf die Frage

1
Eric Renouf

Ihr \twird nicht als Tabulatorzeichen interpretiert. Um dies zu tun, können / sollten Sie eine ANSI-Zeichenfolge verwenden, damit Ihr Befehl verwendet wird

join -t $'\t' f1.txt f2.txt -1 2 -2 1 > f3.txt 

mit dem $vor dem '\t'so wird es als ein Tab interpretiert, wie Sie möchten.

Eine praktische Ressource für die Quotierung Dinge mit bashmindestens zur Verfügung steht hier

Hallo danke. es funktionierte. Ich habe nur noch eine Frage, wenn Sie wissen. Was ist der Unterschied zwischen sort -k2 und sort -k2,2. Ich habe einige Beispiele gesehen, aber nicht ganz verstanden. Shabhri Naresh vor 7 Jahren 0
@ShabhriNaresh im Allgemeinen sollten neue Fragen als neue Frage gestellt werden, aber jetzt, wenn Sie `-k2` ausführen, wird die Sortierung von Feld 2 bis zum Ende der Zeile als Teil der Sortierung durchgeführt,` -k2,2` wird verwendet Führen Sie die Sortierung nur nach Feld 2 aus und berücksichtigen Sie keine anderen Felder. "-k2,3" würde nur das zweite und dritte Feld usw. verwenden. Die erste Zahl ist das erste zu betrachtende Feld, die zweite ist das letzte Eric Renouf vor 7 Jahren 0