Wie bekomme ich jedes Feld der Join-Befehlsausgabe durch Tabs getrennt werden?Sortier- und Join-Datei in Bash (Skript)
Antwort
Dies ist ein Job für einen Prozess Substitution ist:
join <(sort annotation) <(sort output2.txt) >outputtest.txt
In dieser Verwendung wird <(sort annotation)
mit einem dateiähnliche Objekt (entweder /dev/fd/10
-Form oder einer Named Pipe) ersetzt werden, das, wenn von diesem gelesen enthält die Ausgabe des Befehls sort annotation
. Daher wird join
sortierte Eingabe sehen, ohne dass eine der Dateien direkt geändert werden muss (was der ursprüngliche Code nicht tat).
Danke, das funktioniert! obwohl ich eine Frage habe, fusioniert es die erste Spalte, wenn es in beiden Dateien gleich ist? Gibt es da auch irgendwie, um ihm zu sagen, dass er die Ausgabe mit Tabs anzeigen soll, oder sollte ich danach einen anderen Befehl verwenden? –
Ich möchte mehr über das Eingabeformat und Anwendungsfall wissen. Sie können '-t $ '\ t'' als Argument für' join' verwenden, um Tabs anzugeben, die sowohl für die Eingabe als auch für die Ausgabe verwendet werden. Wenn Sie die erste Spalte als Zusammenführungsfeld angeben möchten, macht '-j 1' dies explizit. –
okay, ich werde meinen Beitrag bearbeiten! aber über die Verschmelzung Sache, Ich möchte nicht vor allem die ersten Spalten der Datei zusammenführen, aber wenn ich versuchte, die Befehlszeile, die Sie mir gab, hat es die ersten Spalten zusammengeführt (die BTW sind die gleichen in beiden Dateien) –
- 1. Bash Sortier Komma und Strings
- 2. Wie entwickle ich dieses Sortier-Skript weiter?
- 3. Expect und Bash Skript
- 4. Bash-Skript und alias
- 5. rvm und sudo in Bash-Skript und Rake-Skript
- 6. Bash-Skript und bearbeiten CSV
- 7. Skript-Bash und History Unix
- 8. Bash-Skript und regex Ausgabe
- 9. Counter in Bash-Skript
- 10. OpenSSL in Bash-Skript
- 11. Tabulierung in Bash-Skript
- 12. in einem Bash-Skript
- 13. Datum in Bash-Skript
- 14. Papierkorb in Bash-Skript
- 15. Berechnung und Zuweisung Wert in Bash-Skript
- 16. Redirect stdin und stdout in Bash-Skript
- 17. Warum dupliziert mein GAS-Sortier-Skript alle Zeilen?
- 18. Skript für in bash
- 19. ftp Skript in Bash
- 20. Verwendung in Bash-Skript.
- 21. Schleife in Bash-Skript
- 22. Abteilung in Bash-Skript
- 23. Autovervollständigen in Bash-Skript
- 24. Running Bash-Skript in Upstart .conf-Skript
- 25. Unable Bash-Skript Zsh Skript
- 26. Running Bash-Skript als Dienst und Schreiben in ein anderes Bash-Skript funktioniert nicht
- 27. Auswahl Sortier- und Bubble-Sortierfehler
- 28. Schleife PHP-Skript in Bash
- 29. Newline Madness in Bash-Skript
- 30. Cloudwatch Fehler in Bash-Skript
'X || Y' bedeutet 'tu Y nur, wenn X fehlschlägt'. Das willst du doch nicht? –
Wenn Sie eine Datei 'x' an Ort und Stelle sortieren wollen, verwenden Sie' sort -o x x'; Dies ist sicher und überlagert die Eingabedatei nicht, bis die sortierten Daten geschrieben werden. Sie könnten dann 'sort -o annotation.txt annotation.txt; sort -o ausgabe2.txt ausgabe2.txt; Join output2.txt annotation.txt> outputtest.txt'. Wenn Sie der Meinung sind, dass Fehlermeldungen auftreten und Sie diese wirklich in der Ausgabedatei haben wollen, verwenden Sie '&>' statt nur '>'. Wenn Sie die Dateien nicht dauerhaft neu anordnen möchten, verwenden Sie [Prozesssubstitution] (https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution), wie von Charles Duffy vorgeschlagen. –
nop haha Ich meine, tun X und Y und dann sie beide für Z –