Verschiedene Möglichkeiten, den Spaltenbefehl unter Linux zu verwenden

Verschiedene Möglichkeiten, den Spaltenbefehl unter Linux zu verwenden

Waren Sie jemals in einer Situation, um mit CSV -Dateien zu arbeiten und die Ausgabe im strukturierten Tabelleformat zu erzeugen? Vor kurzem habe ich mit Datenreinigung an einer Datei gearbeitet, die sich nicht in einer richtigen Struktur befindet. Es hat so viele Whitespaces zwischen jeder Spalte und ich muss es in das CSV -Format umwandeln, um in die Datenbank zu drücken. Nach dem Reinigen und Erstellen der Ausgabe im CSV -Format ist meine Ausgabe nicht visuell ansprechend, um die Datenintegrität in der CSV -Datei zu überprüfen. Dies ist die Zeit, in der der Befehl „Spalte“ für mich nützlich ist.

Laut Manpage die Spalte Befehl "Spaltenlisten”. In einfachen Worten die Spalte ist ein einfaches Dienstprogramm, das Ihre Ausgabe in a formatieren kann Spalte Format (Zeilen und Felder) basierend auf der Struktur Ihrer Quelldatei. Der Spalte Der Befehl ist Teil des Util-Linux-Pakets.

Ein wichtiger Punkt hier ist Spalte Der Befehl verhält sich in Debian-basierten und rhelbasierten Distributionen unterschiedlich. Der Grund ist die Debian-basierte Distribution “Spalte" aus bsdmainutils anstelle von util-linux. Die stromaufwärts gelegene Version der Spalte Befehl ist neuer als der bsdmainutils Paket. Schauen Sie sich den Fehlerbericht an, um mehr darüber zu erfahren.

$ dpkg -s $ (welche Spalte) 
Welche Spalte

Für Demonstrationszwecke benutze ich Centos 7 und wird unterschiedliche Optionen zwischen zeigen Ubuntu Und Centos 7. Um die zu überprüfen Spalte Version Führen Sie den folgenden Befehl aus. Dieser Befehl zeigt auch die Util-Linux Paketversion.

$ columne --version # funktioniert nicht in debian/ubuntu 

Sie können auch die Version von Util-Linux überprüfen, indem Sie die folgenden Befehle ausführen.

$ rpm -qa | GREP -I -Util -Linux # Redhat, Centos, Fedora, Amazon Linux $ dpkg -l | grep -i util -linux # Ubuntu 

Vor Verwendung der Spalte Befehlen Sie einen guten Ort zum Starten. Die Mannseite ist und erkunden Sie die Optionen.

$ MAN -Säule 

Listendateiinhalt im tabellarischen Format auflisten

Der Spalte Der Befehl kann eine Tabelle erstellen, indem der Dateiname zusammen mit dem zusammen mit dem übergeben wird -T Flagge. ich benutze /etc/passwd Als Eingabedatei.

$ column -t /etc /passwd 
Listendateiinhalte im Tabellenformat

Wenn Sie sich das obige Bild ansehen, denken Sie vielleicht, dass dies nicht das ist, was wir erwartet haben, und die Ausgabe kann seltsam aussehen. Ja! Du hast Recht. Säulen halten Platz als Standard -Trennzeichen Beim Erstellen einer Tabelle. Dieses Verhalten kann durch die Übergabe eines benutzerdefinierten Trennzeichens überschrieben werden.

Benutzerdefinierter Grenzwert

Benutzerdefinierte Abgrenzer bieten Ihnen eine breite Palette von Optionen zum Arbeiten zur Arbeit. Um einen benutzerdefinierten Trennzeichen zu erstellen -S Flagge gefolgt von einem Trennzeichen. Jetzt werden wir verwenden ":" Als Trennzeichen zu spalten /etc/passwd Datei.

$ column -s ":" -t /etc /passwd 
Abgrenzer

Schauen Sie sich das obige Bild an, in dem die Tabelle schön formatiert und strukturiert ist. Aus Util-Linux Version 2.23 Option -S wurde geändert, um nicht gierig zu sein.

Führen Sie nun den gleichen Befehl in aus in Ubuntu und das Ergebnis wird gierig sein. Das ist weil Spalte Befehl (bsdmainutils) An Ubuntu behandelt mehrere benachbarte Wörter als einzelnes Wort.

$ column -s ":" -t /etc /passwd 
Gierige Ausgabe

Um diesen Verhaltensgebrauch zu überwinden -N Flagge.

$ column -t -s ":" -n/etc/passwd # nur auf Debian/Ubuntu 
Nicht-Greedy-Ausgabe

Ignorieren Sie weiße leere Zeilen in der Dateiausgabe

Wenn Sie leere Zeilen in Ihrer Eingabedatei haben, ignoriert der Befehl Spalte standardmäßig sie standardmäßig. Siehe meine Eingabedatei, die sich im CSV -Format befindet, und ich habe eine leere Linie zwischen jeder Zeile hinzugefügt. Erstellen wir nun eine Tabelle wie zuvor mit dieser Eingabedatei.

$ column -t -s ";"; " Dummy.txt 
Ignorieren Sie leer, während Linien

Aus dem obigen Bild können Sie meine Eingabedatei sehen Dummy.txt Hat leere Zeilen und wenn ich versuche, eine Tabelle zu erstellen, werden leere Zeilen ignoriert.

Notiz: Dies ist das Standardverhalten für beide “bsdmainutils/util-linux”Variante der Spalte Befehl. Aber Spalte (bsdmainutils) hat die Option, dieses Verhalten durch Bestehen zu überschreiben -e Flagge.

$ column -e -t -s "," Dummy.TXT # nur auf Debian/Ubuntu 
Weiße Zeilen Datei

Aus dem obigen Bild können Sie sehen, dass die Tabelle ordnungsgemäß formatiert ist und die leeren Linien nicht ignoriert werden.

Dateiausgabe -Trennzeichen

Standardmäßig werden zwei weiße Räume als Ausgangsabscheider verwendet. Dieses Verhalten kann durch Passieren überschrieben werden Flagge. Sie haben keine Ausgangsabscheider -Option in der Spalte (bsdmainutils).

$ column -t -s "," -o "||" Dummy.TXT # nur auf rhelbasierter Distribution 
Dateiausgabe -Trennzeichen

Umwandeln Sie Dateireihen in Spalten

Verwendung der -X Das Flag, Sie können Zeilen in Spalten umwandeln. Dieses Verhalten ist in beiden gleich rhel Und Ubuntu Varianten des Spaltenbefehls. Dies ist eine sehr nützliche Funktion, wenn Sie ein bestimmtes Feld über den Befehl AWK oder Spalte schnappen müssen und ihn für Ihre CSV -Datei in den Header konvertieren müssen.

$ column -x fillcols.txt 
Konvertieren Sie Dateizeilen in Spalten

Wenn Sie die ausführen Spalte Befehl ohne Flaggen zu verwenden Das Verhalten ist das gleiche wie das Bestehen -X Flagge.

Spaltengröße finden

Der Spalte Verwendet eine Umgebungsvariable ($ Spalten) Um die Größe Ihres Terminals herauszufinden und auf der Größe des Echo -Befehls zu verwenden, wird die Tabellengröße im Terminal angezeigt.

$ echo $ columns 

Schauen Sie sich das Bild unten an. Anfangs habe ich mein Terminal verändert, um zu haben, um zu haben $ Spalten die Größe auf 60 und leitete den Spaltenbefehl. Wieder die Änderung meines Terminals, um zu haben, um zu haben $ Spalten die Größe auf 114 und leitete den Spaltenbefehl erneut. Sie können den Unterschied darin erkennen, wie die Spalte die Tabelle druckt, wenn wir die Größe des Terminals ändern.

$ column -t -s ":" /etc /passwd | Kopf 5 
Größe der Größe der Spaltengrößen

Das war's für diesen Artikel. Wenn Sie Feedback haben.