Wie sortiere ich eine Tab-getrennte Datei in der n-ten Spalte mit cygwin sort?

7

Ich habe eine große Tab-getrennte Datei, die ich in der zweiten Spalte sortieren möchte. Ich muss das Tab-Zeichen als Feldtrennzeichen in cygwin sort verwenden. Also brauche ich so etwas:

%Vor%

Aber die Eingabeaufforderung wertet "\ t" wörtlich und nicht als Tabulatorzeichen aus. Beachten Sie, dass ich dies auf einem Windows-Computer mit Cygwin ausführen muss. Variationen wie

%Vor%

funktioniert nicht, auch nicht in eine cmd-Datei mit einem tatsächlichen Tab anstelle des obigen.

Bearbeiten: Eine Lösung, die entweder die DOS-Shell oder die Cygwin-Bash-Shell verwendet, ist in Ordnung.

    
Nikhil 09.01.2009, 00:38
quelle

5 Antworten

13

Auf meinem Rechner (Mac bash prompt, GNU sort ...) funktioniert das:

%Vor%

(Eine "echte" Registerkarte zwischen den Anführungszeichen.)

Um den Tab dort zu bekommen, tippe ich STRG-V, TAB (STRG-V gefolgt von TAB).

EDIT: Ich habe es jetzt auf einem Windows-Rechner von der cygwin-Eingabeaufforderung aus getestet und es funktioniert dort genauso (wie ich es erwartet habe, bash ist bash).

    
PEZ 09.01.2009, 01:06
quelle
10

Sie müssen vor dem \ t ein $ -Zeichen hinzufügen, um die String-Interpolation einzuschalten, so dass die Registerkarte tatsächlich zum Sortieren gesendet wird. Dies sollte in jedem Terminal funktionieren:

%Vor%     
Joakim Lundborg 17.07.2009 12:14
quelle
1

In der Windows-Eingabeaufforderung ist die einfachste Lösung, die ich gefunden habe, die Tabulatorvervollständigung zuerst mit:

zu deaktivieren %Vor%

Dann können Sie ein literales Tabulatorzeichen eingeben.

    
tlvince 02.04.2011 08:00
quelle
0

Ich wollte eine Lösung für das Sortieren von GnuWin32 unter Windows, aber keine der obigen Lösungen funktionierte für mich in der Befehlszeile. Aber die folgende Batch-Datei (.bat) hat funktioniert, was ich sowieso wollte. Geben Sie das Tabulatorzeichen in doppelte Anführungszeichen ein.

C: & gt; cat foo.bat

sort -k3 -t "" tabfile.txt

    
Lawrence Noronha 11.06.2014 22:50
quelle
0

Wer sieht hier die Ironie?
Du musst durch die Rahmen springen, um den Tabulator als Tab zu erhalten ...

In der Windows-Eingabeaufforderung konnte ich Folgendes tun:
c: \ bin \ sort -t "(actual tab)" aber erst nach dem Start von cmd / f: off (wie oben angedeutet)

Auf Windows bat-Datei konnte ich dasselbe tun, solange der Texteditor (notepad2 :-) so eingestellt war, dass Tabs als Tabulatoren und nicht als Leerzeichen eingefügt wurden.

Es gibt einige beliebte Tipps, um ein -t $ '\ t "zu verwenden, aber ich habe versucht, 2 ^ 16 Kombinationen davon ohne Glück oder Haar.

    
0xG 15.09.2015 16:37
quelle

Tags und Links