Verschiedene Möglichkeiten, den Spaltenbefehl unter Linux zu verwenden
- 5012
- 1189
- Marleen Weight
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 /passwdListendateiinhalte 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 /passwdAbgrenzer
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 /passwdGierige Ausgabe
Um diesen Verhaltensgebrauch zu überwinden -N
Flagge.
$ column -t -s ":" -n/etc/passwd # nur auf Debian/UbuntuNicht-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.txtIgnorieren 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/UbuntuWeiß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 DistributionDateiausgabe -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.txtKonvertieren 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 5Größe der Größe der Spaltengrößen
Das war's für diesen Artikel. Wenn Sie Feedback haben.
- « Verschiedene Möglichkeiten zum Lesen von Dateien im Bash -Skript mit der THE -Schleife
- So installieren Sie Terraform in Linux -Verteilungen »