Ich möchte eine dreispaltige Textdatei in drei separate Dateien mit jeweils einer Zeile transponieren. Mit anderen Worten, nehmen Sie diese Datei:Probleme beim Transponieren von Spalten mit Schnitt
in_file
1 22 0.8
4 21 0.73
3 30 1.56
5 12 0.92
und produzieren die folgenden drei Dateien:
out_file1
1 4 3 5
out_file2
22 21 30 12
out_file3
0.8 0.73 1.56 0.92
Ich versuchte Schnitt zu verwenden, dies zu tun:
cut -d' ' -f1 in_file | tr -s '\n' '\t' >> out_file1
cut -d' ' -f2 in_file | tr -s '\n' '\t' >> out_file2
cut -d' ' -f3 in_file | tr -s '\n' '\t' >> out_file3
aber, was ich bekomme, ist dies:
out_file1
1 4 3 5
out_file2
out_file3
0.8
0.73
1.56
0.92
ich kann nicht herausfinden, warum es für die ersten 2 Spalten arbeitet und nicht die dritte.
Dankbar für jede Hilfe!
Sind Sie sicher, dass das Trennzeichen immer ein einzelnes Leerzeichen ist? –
Das Trennzeichen ist immer ein Tabulator. Tatsächlich wurde mir klar, dass ein Fehler in meinem Post oben ist - ich habe jetzt aktualisiert, wie die out_file3 tatsächlich aussieht (ein neuer Tab am Anfang jeder Zeile). – Neuroguy
Der Eingabe-Begrenzer - ist es ein Tab oder ein Leerzeichen? Wenn es ein einzelnes Leerzeichen ist, funktioniert Ihr Code für mich (Centos 6.5) Sie könnten 'cat in_file | tr -s "" 'vor dem Schnitt – mousomer