Erweiterte String-Operationen in Bash
In diesem letzten Schritt werden wir erweiterte String-Operationen in Bash untersuchen, einschließlich String-Manipulation, Mustervergleich und -ersetzung. Mit diesen Techniken können Sie komplexe Textverarbeitungsaufgaben in Ihren Skripten ausführen.
String-Manipulationsfunktionen
Bash bietet verschiedene integrierte Mechanismen zur Manipulation von Strings. Lassen Sie uns diese Operationen untersuchen:
-
Öffnen Sie die Datei string_ops.sh im Editor:
- Navigieren Sie im Datei-Explorer zu
~/project/string_formatting
- Klicken Sie auf
string_ops.sh, um sie zu öffnen
-
Ersetzen Sie den Inhalt durch den folgenden Code:
#!/bin/bash
## String length
message="Hello, Bash scripting world!"
echo "Original message: $message"
echo "Length of message: ${#message} characters"
## Extracting substrings
## Syntax: ${string:position:length}
echo "First 5 characters: ${message:0:5}"
echo "Characters 7-11: ${message:7:5}"
echo "From position 13 to end: ${message:13}"
## Searching and replacing within strings
filename="report.txt.backup"
echo "Original filename: $filename"
## Replace first occurrence
echo "Replace first occurrence of 'txt' with 'pdf': ${filename/txt/pdf}"
## Replace all occurrences
text="one two one two three"
echo "Original text: $text"
echo "Replace all occurrences of 'one' with '1': ${text//one/1}"
## Replace at beginning of string
echo "Replace 'one' at beginning: ${text/#one/1}"
## Replace at end of string
echo "Replace 'three' at end: ${text/%three/3}"
-
Speichern Sie die Datei, indem Sie Ctrl+S drücken oder im Menü "Datei" > "Speichern" auswählen
-
Führen wir nun die Datei ausführbar und führen sie aus:
chmod +x string_ops.sh
./string_ops.sh
Sie sollten eine Ausgabe sehen, die verschiedene String-Manipulationsoperationen zeigt:
Original message: Hello, Bash scripting world!
Length of message: 29 characters
First 5 characters: Hello
Characters 7-11: Bash
From position 13 to end: scripting world!
Original filename: report.txt.backup
Replace first occurrence of 'txt' with 'pdf': report.pdf.backup
Original text: one two one two three
Replace all occurrences of 'one' with '1': 1 two 1 two three
Replace 'one' at beginning: 1 two one two three
Replace 'three' at end: one two one two 3
Groß-/Kleinschreibungsumwandlung
Bash bietet auch Mechanismen zum Ändern der Groß- und Kleinschreibung von Text. Fügen wir Beispiele für die Groß-/Kleinschreibungsumwandlung hinzu:
- Fügen Sie am Ende von
string_ops.sh den folgenden Code hinzu:
## Case conversion
uppercase="HELLO WORLD"
lowercase="hello world"
mixed="Hello World"
## Converting to uppercase
echo "Original: $lowercase"
echo "Uppercase: ${lowercase^^}"
## Converting to lowercase
echo "Original: $uppercase"
echo "Lowercase: ${uppercase,,}"
## Converting first character to uppercase
echo "Original: $lowercase"
echo "First character uppercase: ${lowercase^}"
## Converting first character to lowercase
echo "Original: $mixed"
echo "First character lowercase: ${mixed,}"
- Speichern Sie die Datei und führen Sie sie erneut aus:
./string_ops.sh
Die zusätzliche Ausgabe sollte Beispiele für die Groß-/Kleinschreibungsumwandlung zeigen:
Original: hello world
Uppercase: HELLO WORLD
Original: HELLO WORLD
Lowercase: hello world
Original: hello world
First character uppercase: Hello world
Original: Hello World
First character lowercase: hello World
Fügen wir Beispiele für String-Trimmen und -Formatierungstechniken hinzu:
- Fügen Sie am Ende von
string_ops.sh den folgenden Code hinzu:
## String trimming
path=" /usr/local/bin/ "
echo "Original path with spaces: '$path'"
echo "Trimmed path: '${path// /}'" ## Remove all spaces
## Removing prefixes and suffixes
filename="archive.tar.gz"
echo "Original filename: $filename"
echo "Without .tar.gz extension: ${filename%.tar.gz}"
echo "Without any extension: ${filename%%.*}"
echo "Extract extension: ${filename#*.}"
echo "Extract full extension: ${filename##*.}"
## Padding strings
number=42
printf "Number with leading zeros (5 digits): %05d\n" $number
name="Bob"
printf "Name padded to 10 characters: %-10s|\n" $name
- Speichern Sie die Datei und führen Sie sie erneut aus:
./string_ops.sh
Die zusätzliche Ausgabe sollte Beispiele für das Trimmen und Formatieren zeigen:
Original path with spaces: ' /usr/local/bin/ '
Trimmed path: '/usr/local/bin/'
Original filename: archive.tar.gz
Without .tar.gz extension: archive
Without any extension: archive
Extract extension: tar.gz
Extract full extension: gz
Number with leading zeros (5 digits): 00042
Name padded to 10 characters: Bob |
Praktisches Beispiel: Log-Parser
Lassen Sie uns ein praktisches Beispiel erstellen, das erweiterte String-Operationen verwendet, um Log-Einträge zu parsen und zu formatieren:
- Fügen Sie am Ende von
string_ops.sh den folgenden Code hinzu:
## Practical example: Log parser
echo -e "\n--- Log Parser Example ---\n"
## Sample log entries
log_entries=(
"[2023-10-25 08:15:22] INFO: Application started"
"[2023-10-25 08:16:45] WARNING: High memory usage detected"
"[2023-10-25 08:17:30] ERROR: Database connection failed"
"[2023-10-25 08:18:10] INFO: Backup process initiated"
"[2023-10-25 08:19:55] ERROR: Out of disk space"
)
## Parse and format log entries
for entry in "${log_entries[@]}"; do
## Extract timestamp (everything between [ and ])
timestamp=${entry#*[}
timestamp=${timestamp%%]*}
## Extract log level (INFO, WARNING, ERROR)
level=${entry#*] }
level=${level%%:*}
## Extract message
message=${entry#*: }
## Format based on log level
case $level in
"INFO")
printf "%-20s [\033[36m%-7s\033[0m] %s\n" "$timestamp" "$level" "$message"
;;
"WARNING")
printf "%-20s [\033[33m%-7s\033[0m] %s\n" "$timestamp" "$level" "$message"
;;
"ERROR")
printf "%-20s [\033[31m%-7s\033[0m] %s\n" "$timestamp" "$level" "$message"
;;
esac
done
- Speichern Sie die Datei und führen Sie sie aus:
./string_ops.sh
Der letzte Ausgabebereich sollte formatierte Log-Einträge mit verschiedenen Farben basierend auf der Log-Ebene anzeigen:
--- Log Parser Example ---
2023-10-25 08:15:22 [INFO ] Application started
2023-10-25 08:16:45 [WARNING] High memory usage detected
2023-10-25 08:17:30 [ERROR ] Database connection failed
2023-10-25 08:18:10 [INFO ] Backup process initiated
2023-10-25 08:19:55 [ERROR ] Out of disk space
Dieses Log-Parser-Beispiel zeigt, wie die Kombination verschiedener String-Operationen mit Formatierung und Farbcodierung Rohdaten in ein lesbareres und strukturierteres Format umwandeln kann. Solche Techniken sind äußerst nützlich bei der Entwicklung von Skripten für die Log-Analyse, Datenverarbeitung oder Berichterstellung.