Betrachten Sie die folgende Mitarbeitertabelle, die in einem Texteditor mit einer Schriftart festgelegt wurde, wie z. B. Courier:
Name | Geburtsdatum | Zeit der Geburt | Spezialität | In Zeitarbeit | Zeit beschäftigt |
---|---|---|---|---|---|
John | 11-05-91 | 10:11:12 | Ingenieur | 12-06-14 | 13:14:15 |
Paul | 03-16-86 | 16:17:18 | Buchhalter | 06.19.15 | 19:20:21 |
Peter | 07-20-81 | Tischler | 08-21-16 | ||
Maria | 22:23:24 | Architekt | 01:02:03 | ||
Susan | 04-17-87 | 17:22:36 | Sekretär | 21-49-55 | 08:43:32 |
Angenommen, diese Daten befinden sich in einer Datei mit dem Namen, Mitarbeiter.txt, in einem Linux -Benutzerverzeichnis. Es gibt sechs Textspalten mit sechs Überschriften, die Name, Geburtsdatum, Geburtszeit usw. sind. Es gibt sechs Zeilen, die aus einer Kopfzeile- und fünf Datenzeilen bestehen. Dies ist also eine Tabelle mit Spalten und Zeilen (Zeilen). Der Inhalt jeder Tabellenzelle wird als Feld bezeichnet. Ein Feld ist auch ein Unterstring. Da eine Schriftart mit fester Breite verwendet wurde, gibt es Spalten von Zeichen. Jede Textspalte enthält Zeichenspalten. Es gibt also Spalten mit Zeichen und Spalten von Feldern.
Um die Tabelle einzugeben, beginnen Sie mit der Header -Reihe. Geben Sie das erste Feld ein und drücken Sie die Registerkarte Taste auf der Tastatur. Geben Sie das nächste Feld ein und drücken Sie die Registerkarte Taste. Fahren Sie auf diese Weise bis nach dem letzten Header -Feld fort. Drücken Sie die Eingabetaste. Wenn die Registerkarte gedrückt wird, wird das Zeichen '\ t' in den Dateicode eingefügt, der vom Benutzer nicht angezeigt wird. Der Benutzer wird jedoch als einen Speicherplatz angesehen (was möglicherweise lang sein kann). Wenn die Eingabetaste am Ende der Zeile gedrückt wird, wird das Zeichen '\ n' in den Dateicode eingefügt, der vom Benutzer nicht angezeigt wird. Die Registerkartenschlüssel wird als ein Zeichen gezählt.
Jede der Datenlinien wird auf die gleiche Weise getippt. Wenn ein Feld jedoch leer ist, muss es gefüllt werden, indem die Space-Bar-Taste gedrückt wird, bis die Registerkarte gedrückt wird, um zur nächsten Textspalte zu gehen. Damit der Beginn des nächsten Feldes mit dem Beginn seiner Textspalte übereinstimmt.
Für den Ubuntu -Texteditor erstreckt sich die Registerkartenschlüssel acht Zeichen. Wenn also die Registerkarte gedrückt wird, ist die Anzahl der Zeichen, die sie hinzufügt. Vergessen Sie nicht, dass am Ende einer Zeile die Eingabetaste gedrückt werden muss, und diese Aktion fügt ein Zeichen in den Code ein, das vom Benutzer nicht gesehen wird. Wenn die Registerkarte gedrückt wird, wird ein einzelnes Zeichen in den Code eingefügt, der vom Benutzer nicht angezeigt wird. Die Registerkartenschlüssel wird also als ein Zeichen gezählt.
Die Zeilen werden von den Newline -Zeichen abgegrenzt. Die Felder werden durch die Registerkartenzeichen abgegrenzt. Felder dürfen nicht unbedingt so klassisch wie oben beschrieben sein. Der Trennzeichen darf nicht unbedingt ein Registerkartenzeichen sein. In der obigen Tabelle kann ':' kann als Trennzeichen anstelle der Registerkarte betrachtet werden. In diesem Fall werden die Unterstrahlen in jeder Zeile neu unterteilt. Zum Beispiel würde im Registerkartenfeld Time-of-Geburten ':': 'zwei Zeichenspalten abgraben (an beiden Enden). Für die gleiche Tabelle hätte die erste Zeile und die Linie für Peter keinen Trennzeichen. Die gesamte Linie wird zu ihrem Feld.
Die Abgrenzung von Zeichenspalten kann über Registerkartenfelder gelangen. Zum Beispiel das letzte ':' Im Bereich Time-of-Birth-Registerkarte und die erste ':' Im zeitgesteuerten Registerkartenfeld beschreibt Zeichenspalten, Cross-Registerkartenfelder und die Registerkartenzeichen. Andere abgrenzende Zeichen wie Kommas finden sich ebenfalls in anderen Dateien.
Artikelinhalt
Syntax schneiden
Der Befehl Cut kopiert Spalten nach Zeichen oder nach Feldern, basierend auf bestimmten Optionen und ihren Werten. Es kann auch Zeilen kopieren, aber die Bedingungen zum Kopieren von Zeilen sind begrenzt. Es kann eine Reihe von Spalten und Zeilen kopieren. Trotzdem sind die Bedingungen für die beteiligten Reihen begrenzt. Zeilen sind Linien. Die Syntax ist:
Option ausschneiden… [Datei]…
Es kann mehr als eine Datei geben. In diesem Tutorial wird jedoch nur eine Datei verwendet, deren Name Mitarbeiter ist.txt im Benutzerverzeichnis und mit dem obigen Inhalt. Wenn es kein Dateiargument gibt, lesen Sie die Lesevorgänge von Standardeingaben aus. Cut ist ein Linux -Shell -Befehl mit unterschiedlichen möglichen Optionen. Einige Optionen nehmen Werte ein.
Die Säulenzählung beginnt von 1 und nicht Null. Die erste Zeichenspalte (links) ist also Spalte 1; Die zweite Zeichenspalte ist Spalte 2; Die dritte Zeichenspalte ist Spalte 3 und so weiter. Die erste Feldspalte (links) ist Feldspalte 1; Die zweite Feldspalte ist Feldspalte 2; Die dritte Feldspalte ist Feldspalte 3 und so weiter.
Der Befehl Cut kopiert also Abschnitte aus Zeilen in einer Datei, wie hervorgehoben wurde. Es druckt normalerweise das Ergebnis zu Standardausgabe.
Felder ausschneiden
Ausschneiden von Feldern bedeutet das Kopieren von Feldern. Die ursprüngliche Datei bleibt intakt. Die Option -f wird dafür verwendet, wobei F für das Feld steht. -F verwendet den Registerkartenzeichen als Trennzeichen. Also in
$ cut -f 1,3 Mitarbeiter.txt
-f bedeutet, dass der Befehl Felder und keine Zeichen oder Bytes kopiert. Der Wert für -F beträgt 1 und 3 durch Kommas und kein Platz. Dies bedeutet, an die Standardausgabe zu senden, Feldspalten 1 und 3. Das Ergebnis ist:
Name | Zeit der Geburt |
---|---|
John | 10:11:12 |
Paul | 16:17:18 |
Peter | |
Maria | 22:23:24 |
Susan | 17:22:36 |
Wenn Feldsäulen 1, 3, 5 benötigt wären, wäre der Wert für -F 1,3,5 Zahlen gewesen, die durch Kommas getrennt waren, und kein Platz. So können Feldspalten ausgewählt werden. In diesem Fall ist Registerkarte der Trennzeichen.
Bereich der Feldspalten
Der folgende Befehl wählt Feldspalten aus der Feldspalte 2 bis Feld Spalte, 5, einschließlich:
$ cut -f 2-5 Mitarbeiter.txt
Die Ausgabe ist:
Geburtsdatum | Zeit der Geburt | Spezialität | In Zeitarbeit |
---|---|---|---|
11-05-91 | 10:11:12 | Ingenieur | 12-06-14 |
03-16-86 | 16:17:18 | Buchhalter | 06.19.15 |
07-20-81 | Tischler | 08-21-16 | |
22:23:24 | Architekt | ||
04-17-87 | 17:22:36 | Sekretär | 21-49-55 |
Beachten Sie den Bindestrich zwischen 2 und 5, um den Bereich anzuzeigen.
Kopieren von einer Feldnummer, n und höher
Der folgende Befehl kopiert aus der fünften Feldspalte und oben:
$ cut -f 5- Mitarbeiter.txt
Beachten Sie den Bindestrich kurz nach 5, kein Platz dazwischen. Das Ergebnis ist:
In Zeitarbeit | Zeit beschäftigt |
---|---|
12-06-14 | 13:14:15 |
06.19.15 | 19:20:21 |
08-21-16 | |
01:02:03 | |
21-49-55 | 08:43:32 |
Kopieren unter der Feldnummer, n
Der folgende Befehl kopiert die zweite Feldspalte und die folgenden:
$ cut -f -2 Mitarbeiter.txt
Beachten Sie den Bindestrich kurz vor 2, kein Platz dazwischen. Das Ergebnis ist:
Name | Geburtsdatum |
---|---|
John | 11-05-91 |
Paul | 03-16-86 |
Peter | 07-20-81 |
Maria | |
Susan | 04-17-87 |
Säulen von Bytes ausschneiden
Spalten von Bytes werden in ähnlicher Weise wie Feldsäulen kopiert. Wenn der ASCII -Code in Kraft ist, ist ein Byte ein Zeichen. In diesem Fall ist ein Registerkarte (\ t) ein Zeichen, und wenn er kopiert wird, wird er den Cursor dorthin bewirken, wo der neunte Charakter sein sollte. Die Option für Bytes ist -B. Der folgende Befehl zeigt dies für die Spalten der zweiten, dritten und vierten Byte (Zeichen):
$ Cut -B 2,3,4 Mitarbeiter.txt
Die Ausgabe ist:
ein Ich
Ohn
aul
ETE
Ary
USA
Effekt der Registerkarte
Der folgende Befehl zeigt Byte -Spalten vom ersten zum zehnten an:
$ cut -B 1-10 Mitarbeiter.txt
Die Ausgabe ist:
Name | Datum |
---|---|
John | 11-05 |
Paul | 03- |
Peter | |
Maria | 07-2 |
Susan | 04-1 |
Die Anzahl der Bytes (Zeichen) in jeder Zeile ist nicht gleich, da (a) es im Bereich Paulus zwei Raumzeichen nach Paulus gibt; und (b) der TAB -Zeichen wird als ein Zeichen gezählt (und es hat seine Wirkung).
Zeichensäulen ausschneiden
Zeichensäulen werden auf die gleiche Weise wie Byt -Spalten behandelt. Verwenden Sie beim Umgang mit Multi-Byte-Zeichencodierung Zeichen anstelle von Bytes. Die Option für Zeichen ist -c. Die folgenden beiden Befehle reproduzieren die beiden vorherigen Ausgänge (in der Reihenfolge):
$ cut -c 2,3,4 Mitarbeiter.txt
$ cut -c 1-10 Mitarbeiter.txt
Abgrenzer
Anstatt das Registerkartenzeichen zu verwenden, um Unterstrings, Abgrenzer wie ':', '-', ',', ',', usw. zu trennen, usw. kann verwendet werden. Ein solcher Abgrenzer-Umteilungsunterhalt, die die Linie bilden. Mit anderen Worten, anstatt von Feldern durch den Registerkartenzeichen getrennt zu werden, werden sie vom Neugrenzwert getrennt. Die Befehle in diesem Fall ähneln den Feldbefehlungen mit der Option -F, jedoch mit der Option -d für den Trennzeichen enthalten. Der folgende Befehl kopiert die ersten beiden Felder basierend auf dem Trennzeichen "-".
$ cut -d ' -' -f 1,2 Mitarbeiter.txt
Die Ausgabe ist:
Name | Geburtsdatum | Zeit der Geburt | Spezialität | In Zeitarbeit | Zeit beschäftigt |
---|---|---|---|---|---|
John | 11-05 | ||||
Paul | 03-16 | ||||
Peter | 07-20 | ||||
Maria | 22:23:24 | Architekt | 01:02:03 | ||
Susan | 04-17 |
Dieses Ergebnis ist logisch korrekt. Die erste Zeile wurde angezeigt, da sie kein '-'. Die gesamte fünfte Reihe wurde angezeigt, da es kein '-' hat. Das Tab -Zeichen ist jetzt nur ein einzelner Charakter, obwohl er immer noch seinen Effekt hat. Die Reihe für Paul, zum Beispiel "Paul 03" ist jetzt ein Feld und "16" ist das zweite Feld. Mit dem Trennzeichen '-' sind vertikale Ausrichtungen für die neuen Felder schlecht. Zwei Felder wurden zurückgegeben, getrennt durch '-' '. '-' wurde neu gespielt.
Die ersten und fünften Zeilen, die die Grenzwerte nicht haben, können mit der Option -S -Option entfernt werden. Denken Sie daran, Zeilen in diesem Thema sind Zeilen.
Die Option -S
Das obige Ergebnis sollte nicht die erste und fünfte Zeilen haben. Die Option -S eliminiert Zeilen, die den Trennzeichen nicht haben. Mit der Option -S wird der obige Befehl:
$ cut -s -d ' -' -f 1,2 Mitarbeiter.txt
Ein zufriedenstellenderes Ergebnis wird erzielt, das heißt:
John | 11-05 |
Paul | 03-16 |
Peter | 07-20 |
Susan | 04-17 |
Die beiden neuen neu partitionierten Feldsäulen sind jetzt deutlich gesehen.
Die Option -Komplement -Option
Dies kopiert die Ergänzungen für die Spalten der ausgewählten Bytes, Zeichen oder Felder. Der folgende Befehl kopiert die letzten beiden Felder (nach Registerkarte Gremiter) anstelle der ersten vier:
$ cut -Komplement -f -4 Mitarbeiter.txt
In Zeitarbeit | Zeit beschäftigt |
---|---|
12-06-14 | 13:14:15 |
06.19.15 | 19:20:21 |
08-21-16 | |
01:02:03 | |
21-49-55 | 08:43:32 |
Abschluss
Der Befehl Cut kopiert Spalten von Bytes oder Zeichen oder von Unterstrichen aus Textzeilen in einer Datei. Standardmäßig sendet es die ausgewählten Teile der Linien an die Standardausgabe. Ein Abgrenzungsteilung ist ein Feld. Standardmäßig ist der Trennzeichen für Unterstrings das Registerkarte Zeichen. Dies kann jedoch geändert werden. Ein Trennzeichen wie '-' oder ':' oder "usw. kann verwendet werden. Wenn dies erledigt ist, wird die Linie in verschiedene Unterstrahlen überteilt. Mit der Option -S kann es verwendet werden.