Wie Sortiere ich eine tab-getrennte Datei auf der N-TEN Spalte mit cygwin Sortieren?
Ich habe ein riesiges tab-getrennte Datei, die ich Sortieren möchten auf Ihre 2. Säule. Ich muss verwenden Sie das tab-Zeichen als Feld-Trennzeichen in cygwin zu Sortieren. Also brauche ich etwas wie dieses:
sort -t \t -k 2,2 in.txt > out.txt
Aber der Eingabeaufforderung wertet '\t' wörtlich und nicht wie das tab-Zeichen. Beachten Sie, dass ich tun müssen, um diese auf einem Windows Rechner mit Cygwin. Variationen wie
sort -t "\t"
sort -t \"\t\"
nicht funktionieren, auch nicht daran, diese in eine cmd-Datei mit einem aktuellen tab an Stelle des \t oben.
Edit: Eine Lösung, bei der entweder die DOS-shell oder der Cygwin-bash-shell ist in Ordnung.
- Verwenden Sie die DOS-shell oder der cygwin-shell (bash standardmäßig)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf meinem Rechner (Mac-bash-Eingabeaufforderung GNU sort ...) das funktioniert:
(Ein "echtes" tab zwischen den Anführungszeichen.)
Erhalten Sie die Tabulator-ich tippe CTRL-V TAB (CTRL-V gefolgt von TAB).
EDIT: ich habe jetzt getestet, es auf einem Windows-Rechner aus der cygwin-prompt und es funktioniert dort genauso wie hier (wie von mir erwartet, bash ist bash).
Müssen Sie ein $ - Zeichen vor dem \t einzuschalten, string interpolation, so dass das tab tatsächlich gesendet wird, zu Sortieren. Diese Arbeit sollte in jedem terminal:
In der Windows-Eingabeaufforderung, die einfachste Lösung, die ich gefunden ist, deaktivieren Sie die tab-completion der ersten mit:
Dann können Sie geben eine wörtliche tab-Zeichen.
Ich wollte eine Lösung für GnuWin32 Art unter Windows, jedoch keine der oben genannten Lösungen bei mir funktioniert auf der Kommandozeile. Aber die folgende batch-Datei (.bat) gearbeitet, das ist das, was ich wollte, sowieso. Geben Sie das tab-Zeichen innerhalb der Anführungszeichen.
C:>cat foo.bat
sort-k3 -t" " tabfile.txt
Jemand die Ironie hier?
Sie haben zu springen durch Reifen zu bekommen, das tab-Zeichen ein tab...
Auf Windows-Eingabeaufforderung war ich in der Lage, es zu tun mit:
c:\bin\sort -t"(Aktueller tab)" aber nur nach dem starten der cmd /f:off " (wie angedeutet, oben)
Auf Windows bat-Datei, die ich war in der Lage, das gleiche zu tun, solange Sie text-editor (notepad2 🙂 wurde zum einfügen von tabs als tabs, keine Leerzeichen.
Es gibt einige gut gefiel Hinweise zur Nutzung von a-t$'\t", aber ich habe versucht über 2^16 Kombinationen ohne Glück oder die restlichen Haare.