Einführung
Willkommen im Linux-Textausschnitt-Labor (Linux Text Cutting Lab). In diesem Labor lernen Sie, wie Sie den cut-Befehl in Linux verwenden, um bestimmte Teile von Textdateien zu extrahieren. Der cut-Befehl ist ein leistungsstarkes Textverarbeitungswerkzeug, das es Ihnen ermöglicht, Abschnitte aus jeder Zeile von Dateien oder aus gepipeten Daten zu extrahieren.
Sie werden lernen, wie Sie verschiedene Optionen des cut-Befehls verwenden, um Text basierend auf Trennzeichen und Zeichenpositionen zu extrahieren. Diese Fähigkeit ist besonders nützlich, wenn Sie mit strukturierten Textdateien wie CSV-Dateien, Protokolldateien oder jeder Datenquelle arbeiten, die einem konsistenten Format folgt.
Am Ende dieses Labs können Sie Textdaten in Linux-Umgebungen effizient extrahieren und manipulieren. Dies ist eine grundlegende Fähigkeit für Systemadministration, Datenverarbeitung und Automatisierungsaufgaben.
Grundlegende Verwendung des cut-Befehls verstehen
In diesem Schritt lernen Sie die grundlegende Verwendung des cut-Befehls. Der cut-Befehl in Linux wird verwendet, um Abschnitte aus jeder Zeile von Dateien oder aus gepipeten Daten zu extrahieren.
Beginnen wir damit, eine einfache Datendatei zu erstellen, mit der wir arbeiten können:
cd ~/project
echo "name:age:city:occupation" > data/users.txt
echo "Alice:25:New York:Engineer" >> data/users.txt
echo "Bob:30:San Francisco:Designer" >> data/users.txt
echo "Charlie:22:Chicago:Student" >> data/users.txt
echo "Diana:28:Boston:Doctor" >> data/users.txt
Die obigen Befehle erstellen eine Datei namens users.txt im Verzeichnis ~/project/data mit fünf Zeilen von durch Doppelpunkte getrennten Werten.
Lassen Sie uns nun den Inhalt dieser Datei untersuchen:
cat data/users.txt
Sie sollten die folgende Ausgabe sehen:
name:age:city:occupation
Alice:25:New York:Engineer
Bob:30:San Francisco:Designer
Charlie:22:Chicago:Student
Diana:28:Boston:Doctor
cut mit einem Trennzeichen verwenden
Die häufigste Art, cut zu verwenden, ist mit einem Trennzeichen, um bestimmte Felder zu extrahieren. Die grundlegende Syntax lautet:
cut -d'delimiter' -f fields file
Dabei:
-dgibt das Trennzeichen an-fgibt an, welche Felder extrahiert werden sollenfileist die Eingabedatei
Lassen Sie uns die Namen (erstes Feld) aus unserer Datendatei extrahieren:
cut -d':' -f1 data/users.txt
Dieser Befehl teilt cut mit:
:als Trennzeichen zu verwenden (-d':')- Das erste Feld zu extrahieren (
-f1) - Aus der Datei
data/users.txt
Sie sollten die folgende Ausgabe sehen:
name
Alice
Bob
Charlie
Diana
Lassen Sie uns nun die Alter (zweites Feld) extrahieren:
cut -d':' -f2 data/users.txt
Ausgabe:
age
25
30
22
28
Mehrere Felder extrahieren
Sie können mehrere Felder extrahieren, indem Sie sie als durch Kommas getrennte Liste angeben:
cut -d':' -f1,3 data/users.txt
Dies extrahiert das erste und dritte Feld (Name und Stadt):
name:city
Alice:New York
Bob:San Francisco
Charlie:Chicago
Diana:Boston
Einen Bereich von Feldern extrahieren
Sie können auch einen Bereich von Feldern mithilfe eines Bindestrichs extrahieren:
cut -d':' -f2-4 data/users.txt
Dies extrahiert die Felder 2 bis 4 (Alter, Stadt und Beruf):
age:city:occupation
25:New York:Engineer
30:San Francisco:Designer
22:Chicago:Student
28:Boston:Doctor
Kombination mit anderen Befehlen
Der cut-Befehl kann mit anderen Befehlen mithilfe von Pipes kombiniert werden. Beispielsweise, um nur die Alter von Personen, die Ingenieure sind, zu extrahieren:
grep "Engineer" data/users.txt | cut -d':' -f2
Ausgabe:
25
Experimentieren Sie mit verschiedenen Feldkombinationen, um sich mit dem Befehl vertraut zu machen.
Ausschneiden nach Zeichenposition
Neben dem Ausschneiden von Feldern basierend auf Trennzeichen kann der cut-Befehl auch Text basierend auf Zeichenpositionen extrahieren. Dies ist nützlich, wenn Sie mit Datenformaten fester Breite arbeiten oder wenn Sie bestimmte Zeichen aus jeder Zeile extrahieren müssen.
Erstellen von Daten fester Breite
Erstellen wir eine neue Datei mit Daten fester Breite, um dieses Feature zu demonstrieren:
cd ~/project
echo "ID Name Department Salary" > data/employees.txt
echo "001 John IT 75000" >> data/employees.txt
echo "002 Mary HR 65000" >> data/employees.txt
echo "003 Steve Sales 85000" >> data/employees.txt
echo "004 Jennifer Marketing 70000" >> data/employees.txt
Lassen Sie uns nun diese Datei untersuchen:
cat data/employees.txt
Sie sollten sehen:
ID Name Department Salary
001 John IT 75000
002 Mary HR 65000
003 Steve Sales 85000
004 Jennifer Marketing 70000
Extrahieren nach Zeichenposition
Um Text basierend auf Zeichenpositionen zu extrahieren, verwenden Sie die Option -c gefolgt von den Positionen, die Sie extrahieren möchten. Die Syntax lautet:
cut -c positions file
Lassen Sie uns die Mitarbeiter-IDs (erste 3 Zeichen) aus unserer Datendatei extrahieren:
cut -c1-3 data/employees.txt
Dieser Befehl teilt cut mit, die Zeichen 1 bis 3 aus jeder Zeile zu extrahieren. Sie sollten sehen:
ID
001
002
003
004
Extrahieren bestimmter Zeichen
Sie können auch bestimmte, nicht aufeinanderfolgende Zeichen extrahieren:
cut -c1,5,9 data/employees.txt
Dies extrahiert das 1., 5. und 9. Zeichen aus jeder Zeile:
I N
0 J
0 M
0 S
0 J
Extrahieren von einer bestimmten Position bis zum Zeilenende
Um Zeichen von einer bestimmten Position bis zum Zeilenende zu extrahieren, verwenden Sie einen Bindestrich nach der Positionsnummer:
cut -c5- data/employees.txt
Dies extrahiert die Zeichen von Position 5 bis zum Ende jeder Zeile:
Name Department Salary
John IT 75000
Mary HR 65000
Steve Sales 85000
Jennifer Marketing 70000
Kombinieren der Zeichenpositionsextraktion mit Pipes
Sie können den cut-Befehl mit anderen Befehlen mithilfe von Pipes kombinieren. Beispielsweise, um nur die Abteilungsnamen (Zeichen 13-22) von Mitarbeitern mit einem Gehalt von mehr als 70000 zu extrahieren:
grep -E "[7-9][0-9]000" data/employees.txt | cut -c13-22
Dies sollte die folgende Ausgabe liefern:
IT
Sales
Übungsaufgabe
Versuchen Sie, nur die Namen (Zeichen 5-12) aus der Mitarbeiterdatei zu extrahieren:
cut -c5-12 data/employees.txt
Sie sollten sehen:
Name
John
Mary
Steve
Jennifer
Wie Sie sehen können, ist das Ausschneiden nach Zeichenposition besonders nützlich für die Verarbeitung von Datenformaten fester Breite, bei denen jedes Feld eine bestimmte Anzahl von Zeichen in jeder Zeile einnimmt.
Kombinieren von cut mit anderen Textverarbeitungstools
In diesem Schritt lernen Sie, wie Sie den cut-Befehl mit anderen Linux-Textverarbeitungsbefehlen kombinieren können, um komplexere Datenextraktions- und Manipulationstasks durchzuführen.
Erstellen einer CSV-Datendatei
Zunächst erstellen wir eine CSV (Comma-Separated Values, durch Kommas getrennte Werte)-Datei, mit der wir arbeiten können:
cd ~/project
echo "Date,Product,Quantity,Price,Total" > data/sales.csv
echo "2023-01-15,Laptop,5,1200,6000" >> data/sales.csv
echo "2023-01-16,Mouse,20,25,500" >> data/sales.csv
echo "2023-01-17,Keyboard,15,50,750" >> data/sales.csv
echo "2023-01-18,Monitor,8,200,1600" >> data/sales.csv
echo "2023-01-19,Headphones,12,80,960" >> data/sales.csv
Lassen Sie uns den Inhalt dieser Datei überprüfen:
cat data/sales.csv
Sie sollten sehen:
Date,Product,Quantity,Price,Total
2023-01-15,Laptop,5,1200,6000
2023-01-16,Mouse,20,25,500
2023-01-17,Keyboard,15,50,750
2023-01-18,Monitor,8,200,1600
2023-01-19,Headphones,12,80,960
Kombinieren von cut mit grep
Sie können grep verwenden, um Zeilen zu finden, die bestimmte Muster enthalten, und dann cut verwenden, um bestimmte Felder aus diesen Zeilen zu extrahieren:
grep "Laptop" data/sales.csv | cut -d',' -f3-5
Dieser Befehl sucht zunächst alle Zeilen, die "Laptop" enthalten, und extrahiert dann die Felder 3 - 5 (Menge, Preis und Gesamtbetrag). Sie sollten sehen:
5,1200,6000
Kombinieren von cut mit sort
Sie können sort verwenden, um die Daten basierend auf einem bestimmten Feld zu ordnen:
cut -d',' -f2,4 data/sales.csv | sort -t',' -k2nr
Dieser Befehl extrahiert das Produkt (Feld 2) und den Preis (Feld 4) und sortiert sie dann basierend auf dem Preis in numerischer umgekehrter Reihenfolge. Die Option -t',' gibt das Trennzeichen für sort an, -k2 gibt an, dass nach dem zweiten Feld sortiert werden soll, n steht für numerische Sortierung und r für umgekehrte Reihenfolge.
Sie sollten sehen:
Product,Price
Laptop,1200
Monitor,200
Headphones,80
Keyboard,50
Mouse,25
Kombinieren von cut mit sed
Der sed-Befehl ist ein Stream-Editor, der grundlegende Texttransformationen durchführen kann. Hier ist ein Beispiel für die Kombination von cut mit sed:
cut -d',' -f1,2,5 data/sales.csv | sed 's/,/ - /g'
Dies extrahiert die Felder Datum, Produkt und Gesamtbetrag und ersetzt dann alle Kommas durch " - ". Sie sollten sehen:
Date - Product - Total
2023-01-15 - Laptop - 6000
2023-01-16 - Mouse - 500
2023-01-17 - Keyboard - 750
2023-01-18 - Monitor - 1600
2023-01-19 - Headphones - 960
Kombinieren von cut mit awk
Der awk-Befehl ist ein leistungsstarkes Textverarbeitungstool. So können Sie es mit cut kombinieren:
cut -d',' -f2-4 data/sales.csv | awk -F',' 'NR > 1 {print $1 " costs $" $3 " per unit"}'
Dies extrahiert die Felder 2 - 4 (Produkt, Menge und Preis) und verwendet dann awk, um eine Nachricht zu formatieren. Die Bedingung NR > 1 überspringt die Kopfzeile, und die Print-Anweisung formatiert die Ausgabe.
Sie sollten sehen:
Laptop costs $1200 per unit
Mouse costs $25 per unit
Keyboard costs $50 per unit
Monitor costs $200 per unit
Headphones costs $80 per unit
Verarbeiten mehrerer Dateien
Sie können cut auch mit mehreren Dateien verwenden. Erstellen wir eine weitere Datei:
echo "Category,Product,Stock" > data/inventory.csv
echo "Electronics,Laptop,15" >> data/inventory.csv
echo "Accessories,Mouse,50" >> data/inventory.csv
echo "Accessories,Keyboard,30" >> data/inventory.csv
echo "Electronics,Monitor,20" >> data/inventory.csv
echo "Accessories,Headphones,25" >> data/inventory.csv
Jetzt extrahieren wir das Produktfeld aus beiden Dateien:
cut -d',' -f2 data/sales.csv data/inventory.csv
Sie sollten sehen:
Product
Laptop
Mouse
Keyboard
Monitor
Headphones
Product
Laptop
Mouse
Keyboard
Monitor
Headphones
Der cut-Befehl verarbeitet alle Dateien und gibt alle Ergebnisse nacheinander aus. Beachten Sie, dass beide Kopfzeilen enthalten sind.
Durch die Kombination von cut mit anderen Textverarbeitungstools können Sie auf effiziente Weise komplexe Datenmanipulationstasks in Linux durchführen.
Praktische Anwendungen des cut-Befehls
In diesem Schritt werden Sie einige praktische Anwendungen des cut-Befehls erkunden, die Sie in realen Szenarien antreffen könnten.
Analysieren von Protokolldateien
Protokolldateien sind ein häufiger Anwendungsfall für Textverarbeitungstools. Erstellen wir eine einfache Apache-ähnliche Zugriffsprotokoll-Datei:
cd ~/project
cat > data/access.log << EOF
192.168.1.100 - - [15/Feb/2023:10:12:01 -0500] "GET /index.html HTTP/1.1" 200 2048
192.168.1.102 - - [15/Feb/2023:10:13:25 -0500] "GET /images/logo.png HTTP/1.1" 200 4096
192.168.1.103 - - [15/Feb/2023:10:14:10 -0500] "POST /login.php HTTP/1.1" 302 1024
192.168.1.100 - - [15/Feb/2023:10:15:30 -0500] "GET /dashboard.html HTTP/1.1" 200 3072
192.168.1.104 - - [15/Feb/2023:10:16:22 -0500] "GET /css/style.css HTTP/1.1" 404 512
192.168.1.105 - - [15/Feb/2023:10:17:40 -0500] "GET /index.html HTTP/1.1" 200 2048
EOF
Lassen Sie uns die IP-Adressen (erstes Feld) aus der Protokolldatei extrahieren:
cut -d' ' -f1 data/access.log
Sie sollten sehen:
192.168.1.100
192.168.1.102
192.168.1.103
192.168.1.100
192.168.1.104
192.168.1.105
Jetzt extrahieren wir die HTTP-Statuscodes (9. Feld):
cut -d' ' -f9 data/access.log
Sie sollten sehen:
200
200
302
200
404
200
Verarbeiten von Konfigurationsdateien
Ein weiterer häufiger Anwendungsfall ist die Verarbeitung von Konfigurationsdateien. Erstellen wir eine einfache Konfigurationsdatei:
cat > data/config.ini << EOF
[Database]
host=localhost
port=3306
user=dbuser
password=dbpass
[Server]
host=192.168.1.10
port=8080
maxConnections=100
[Logging]
level=INFO
file=/var/log/app.log
EOF
Um alle Parameternamen (der Teil vor dem Gleichheitszeichen) zu extrahieren:
grep -v "^\[" data/config.ini | cut -d'=' -f1
Dieser Befehl verwendet grep -v "^\[", um Abschnittsüberschriften (Zeilen, die mit [ beginnen) auszuschließen, und dann cut, um den Teil vor = zu extrahieren. Sie sollten sehen:
host
port
user
password
host
port
maxConnections
level
file
Extrahieren von Daten aus CSV-Dateien für Berichte
Erstellen wir eine komplexere CSV-Datei, die Schülerleistungen darstellt:
cat > data/grades.csv << EOF
StudentID,Name,Math,Science,English,History,Average
S001,John Smith,85,92,78,88,85.75
S002,Mary Johnson,90,88,92,85,88.75
S003,Robert Davis,78,80,85,92,83.75
S004,Jennifer Lee,95,93,90,87,91.25
S005,Michael Brown,82,85,88,90,86.25
EOF
Um einen einfachen Bericht zu generieren, der die Namen der Schüler und ihre Durchschnittsleistungen zeigt:
tail -n +2 data/grades.csv | cut -d',' -f2,6
Der tail -n +2-Befehl überspringt die Kopfzeile, und cut extrahiert die Felder Name und Durchschnitt. Sie sollten sehen:
John Smith,85.75
Mary Johnson,88.75
Robert Davis,83.75
Jennifer Lee,91.25
Michael Brown,86.25
Um Schüler mit einer Durchschnittsnote über 85 zu finden:
tail -n +2 data/grades.csv | cut -d',' -f2,6 | awk -F',' '$2 > 85 {print $1 " has an average of " $2}'
Sie sollten sehen:
John Smith has an average of 85.75
Mary Johnson has an average of 88.75
Jennifer Lee has an average of 91.25
Michael Brown has an average of 86.25
Extrahieren bestimmter Spalten aus Befehlsausgaben
Sie können cut verwenden, um bestimmte Spalten aus Befehlsausgaben zu extrahieren. Beispielsweise, um nur die Dateinamen und -größen im aktuellen Verzeichnis aufzulisten:
ls -l ~/project/data | tail -n +2 | cut -d' ' -f5,9
Dieser Befehl listet die Dateien im ausführlichen Format auf, überspringt die Kopfzeile und extrahiert die Größe (Feld 5) und den Namen (Feld 9). Die genaue Ausgabe hängt von Ihren Dateien ab, aber sie wird in etwa so aussehen:
237 access.log
99 config.ini
203 employees.txt
179 grades.csv
110 inventory.csv
150 sales.csv
264 users.txt
Diese Beispiele zeigen, wie der cut-Befehl in verschiedenen praktischen Szenarien verwendet werden kann, um bestimmte Teile von Textdaten zu extrahieren und zu verarbeiten.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie den Linux-cut-Befehl verwenden können, um bestimmte Textabschnitte aus Dateien zu extrahieren. Sie haben Folgendes behandelt:
- Die grundlegende Verwendung von
cutmit Trennzeichen, um Felder aus strukturierten Textdateien zu extrahieren - Wie man Text basierend auf Zeichenpositionen für Datenformate mit fester Breite extrahiert
- Das Kombinieren von
cutmit anderen Textverarbeitungstools wiegrep,sort,sedundawkfür komplexere Datenmanipulation - Praktische Anwendungen des
cut-Befehls für häufige Szenarien wie Protokollanalyse, Verarbeitung von Konfigurationsdateien und Datenberichterstattung
Der cut-Befehl ist ein leistungsstarkes Werkzeug im Linux-Textverarbeitungswerkzeugkasten. Obwohl er zunächst einfach erscheinen mag, macht seine Fähigkeit, bestimmte Textabschnitte zu extrahieren, ihn für viele Datenverarbeitungstasks unschätzbar. Wenn er über Pipes mit anderen Linux-Befehlen kombiniert wird, wird er Teil eines flexiblen und leistungsstarken Textverarbeitungssystems.
Einige wichtige Erkenntnisse:
- Verwenden Sie
-d, um ein Trennzeichen anzugeben, und-f, um Felder auszuwählen, wenn Sie mit strukturiertem Text arbeiten - Verwenden Sie
-c, um bestimmte Zeichen auszuwählen, wenn Sie mit Daten mit fester Breite arbeiten - Kombinieren Sie
cutmit anderen Befehlen über Pipes für anspruchsvollere Verarbeitung - Der
cut-Befehl ist am effektivsten, wenn die Daten einem konsistenten Format folgen
Mit diesen Fähigkeiten können Sie jetzt Textdaten in Linux-Umgebungen effizient extrahieren und verarbeiten, was für verschiedene administrative und Datenverarbeitungstasks unerlässlich ist.



