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.