Methode zum Einfügen einer bestimmten Spalte im Terminal

Methode zum Einfügen einer bestimmten Spalte im Terminal

Ich möchte nur die dritte Datenspalte aus dem Terminal einfügen.

Ich habe ursprünglich so etwas wie:

4 SF0086 SF0086
12 SF0087 SF0087
17 TSF141 TSF141
29 TSF070 TSF070
30 TSF028 TSF028   
31 TSF122 TSF122

Wenn ich das kopiere und in das Terminal einfüge, wird es zu einer einzigen Zeile

4 SF0086 SF0086 12 SF0087 SF0087 17 TSF141 TSF141 29 TSF070 TSF070 30 TSF028 TSF028 31 TSF122 TSF122

Ich hätte es gern so:

SF0086
SF0087
TSF141
TSF070
TSF028
TSF122

Ich kann die Option für eine Zeile (Mitte) an dieser Stelle als Datei speichern und dann etwas wie oder verwenden. awkOder sedalles perl, was im gängigen POSIX-System verfügbar ist, ist eine Option, aber ich habe das noch nicht herausgefunden. Ich hatte auch kein Glück mit dem pasteBefehl und komme zu dem Schluss, pastedass er das für mich nicht tun kann. Die Daten ändern sich (was bedeutet, dass sich der Abstand ändert), jedes Mal, wenn ich die dritte Spalte extrahieren muss. Gibt es da draußen irgendwelche Datenextraktions-/Formatierungs-Meister?

Antwort1

„cut“ ist der Befehl, den Sie suchen. Sie geben an, welches Trennzeichen verwendet werden soll (Leerzeichen sind meines Wissens die Standardeinstellung) und welche Spalte Sie möchten. Auf der Manpage finden Sie alle Einzelheiten.

Damit es richtig funktioniert, müssen Sie sicherstellen, dass es mit intakten Zeilenumbrüchen eingefügt wird.

Antwort2

cutWas für mich am besten funktioniert hat, erwies sich jedoch nicht als gültige Option, da ich immer Duplikate haben werde und die Nummerierung (-f Felder) sich immer ändern wird, und da meine Liste Hunderte von Feldern lang sein kann .

Das hier ist das Ergebnis, das ich wollte:

sed -e 's/\s\+/\n/g' data.txt > data_cr.txt && sort data_cr.txt | uniq -d > final.txt

Wo:

sed -e 's/\s\+/\n/g' data.txt > data_cr.txt

zwingt den gesamten Text, getrennt durch Leerzeichen, in eine eigene Zeile und schreibt ihn in eine neue Datei data_cr.txt...und

sort data_cr.txt | uniq -d > final.txt

nimmt die Daten zeilenweise und druckt von allen Duplikaten nur eine einzige Kopie.

verwandte Informationen