GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beispiele für Bash-String-Manipulationen – Länge, Teilstring, Suchen und Ersetzen

Wenn Sie in der Bash-Shell ein Dollarzeichen gefolgt von einem Variablennamen verwenden, erweitert die Shell die Variable um ihren Wert. Diese Funktion der Shell wird als Parametererweiterung bezeichnet.

Die Parametererweiterung hat jedoch zahlreiche andere Formen, die es Ihnen ermöglichen, einen Parameter zu erweitern und den Wert zu ändern oder andere Werte im Erweiterungsprozess zu ersetzen. Lassen Sie uns in diesem Artikel untersuchen, wie das Parametererweiterungskonzept für Zeichenfolgenmanipulationsoperationen verwendet wird.

Dieser Artikel ist Teil der fortlaufenden Bash-Tutorial-Reihe. Weitere Informationen finden Sie in unserem früheren Artikel über die Erweiterung von bash { }.

1. Identifizieren Sie die Zeichenfolgenlänge innerhalb des Bash-Shell-Skripts

${#string}

Das obige Format wird verwendet, um die Länge der angegebenen Bash-Variablen zu erhalten.

$ cat len.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${#var}

$ ./len.sh
24

Um mehr über Bash-Variablen zu erfahren, lesen Sie 6 Praktische Bash-Beispiele für globale und lokale Variablen.

2. Extrahieren Sie eine Teilzeichenfolge aus einer Variablen in einem Bash-Shell-Skript

Bash bietet eine Möglichkeit, einen Teilstring aus einem String zu extrahieren. Das folgende Beispiel erläutert, wie n Zeichen ab einer bestimmten Position geparst werden.

${string:position}

Teilstring aus $string an $position

extrahieren
${string:position:length}

Extrahieren Sie $Länge der Zeichen-Teilzeichenfolge aus $Zeichenfolge beginnend mit $Position. Im folgenden Beispiel gibt die erste echo-Anweisung die Teilzeichenfolge ab der 15. Position zurück. Die zweite Echo-Anweisung gibt die 4 Zeichen ab der 15. Position zurück. Länge muss die Zahl größer oder gleich Null sein.

$ cat substr.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${var:15}
echo ${var:15:4}

$ ./substr.sh
geekstuff
geek

Lesen Sie auch unseren früheren Artikel, um mehr über die speziellen Bash-Parameter $*, $@, $#, $$, $!, $?, $-, $_ zu erfahren.

3. Kürzeste Substring-Übereinstimmung

Die folgende Syntax löscht die kürzeste Übereinstimmung von $substring vor $string

${string#substring}

Die folgende Syntax löscht die kürzeste Übereinstimmung von $substring hinter $string

${string%substring}

Das folgende Beispiel-Shell-Skript erklärt die beiden obigen Konzepte für die Übereinstimmung von kürzesten Teilzeichenfolgen.

$ cat shortest.sh
#! /bin/bash

filename="bash.string.txt"

echo ${filename#*.}
echo ${filename%.*}

$ ./shortest.sh
After deletion of shortest match from front: string.txt
After deletion of shortest match from back: bash.string

In der ersten echo-Anweisung stimmt die Teilzeichenfolge „*.“ mit den Zeichen und einem Punkt überein, und # entfernt den Anfang der Zeichenfolge, sodass die Teilzeichenfolge „bash“ entfernt wird. aus der Variablen namens Dateiname. In der zweiten Echo-Anweisung stimmt die Teilzeichenfolge „.*“ mit der Teilzeichenfolge überein, die mit einem Punkt beginnt, und % wird vom Ende der Zeichenfolge entfernt, sodass die Teilzeichenfolge „.txt“ gelöscht wird

4. Längste Substring-Übereinstimmung

Die folgende Syntax löscht die längste Übereinstimmung von $substring vor $string

${string##substring}

Die folgende Syntax löscht die längste Übereinstimmung von $substring hinter $string

${string%%substring}

Das folgende Beispiel-Shell-Skript erklärt die beiden obigen Konzepte für die längste Übereinstimmung von Teilzeichenfolgen.

$ cat longest.sh
#! /bin/bash

filename="bash.string.txt"

echo "After deletion of longest match from front:" ${filename##*.}
echo "After deletion of longest match from back:" ${filename%%.*}

$ ./longest.sh
After deletion of longest match from front: txt
After deletion of longest match from back: bash

Im obigen Beispiel ##*. Entfernt die längste Übereinstimmung für "*.", die mit "bash.string" übereinstimmt. Nach dem Striping wird die verbleibende TXT-Datei gedruckt. Und %%.* entfernt die längste Übereinstimmung für .* von hinten, die mit „.string.txt“ übereinstimmt, nach dem Striping gibt es „bash“ zurück.

5. Suchen und Ersetzen von Zeichenfolgenwerten im Bash-Shell-Skript

Nur die erste Übereinstimmung ersetzen

${string/pattern/replacement}

Es stimmt mit dem Muster in der Variablen $string überein und ersetzt nur die erste Übereinstimmung des Musters durch die Ersetzung.

$ cat firstmatch.sh
#! /bin/bash

filename="bash.string.txt"

echo "After Replacement:" ${filename/str*./operations.}

$ ./firstmatch.sh
After Replacement: bash.operations.txt

Ersetze alle Streichhölzer

${string//pattern/replacement}

Es ersetzt alle Übereinstimmungen von Muster durch Ersetzung.

$ cat allmatch.sh
#! /bin/bash

filename="Path of the bash is /bin/bash"

echo "After Replacement:" ${filename//bash/sh}

$ ./allmatch.sh
After Replacement: Path of the sh is /bin/sh

Wenn es um Suchen und Ersetzen geht, lesen Sie unsere früheren Artikel – sed-Ersatzbeispiele und Vim-Suchen und -Ersetzen.

Anfang und Ende ersetzen

${string/#pattern/replacement}

Die folgende Syntax ersetzt nur dann durch die Ersetzungszeichenfolge, wenn das Muster mit dem Anfang der $zeichenfolge übereinstimmt.

${string/%pattern/replacement}

Die folgende Syntax ersetzt nur dann durch die Ersetzungszeichenfolge, wenn das Muster am Ende der angegebenen $zeichenfolge übereinstimmt.

$ cat posmatch.sh
#! /bin/bash

filename="/root/admin/monitoring/process.sh"

echo "Replaced at the beginning:" ${filename/#\/root/\/tmp}
echo "Replaced at the end": ${filename/%.*/.ksh}

$ ./posmatch.sh
Replaced at the beginning: /tmp/admin/monitoring/process.sh
Replaced at the end: /root/admin/monitoring/process.ksh

Empfohlene Lektüre

Bash 101 Hacks, von Ramesh Natarajan . Ich verbringe die meiste Zeit in der Linux-Umgebung. Daher bin ich natürlich ein großer Fan von Bash-Befehlszeilen- und Shell-Skripten. Vor 15 Jahren, als ich an verschiedenen Varianten von *nix arbeitete, habe ich viel Code auf der C-Shell und der Korn-Shell geschrieben. Später, als ich anfing, als Systemadministrator an Linux zu arbeiten, automatisierte ich so ziemlich jede mögliche Aufgabe mit Bash-Shell-Scripting. Basierend auf meiner Bash-Erfahrung habe ich das eBook „Bash 101 Hacks“ geschrieben, das 101 praktische Beispiele sowohl für die Bash-Befehlszeile als auch für Shell-Scripting enthält. Wenn Sie darüber nachgedacht haben, Bash zu beherrschen, tun Sie sich selbst einen Gefallen und lesen Sie dieses Buch, das Ihnen helfen wird, die Kontrolle über Ihre Bash-Befehlszeile und Ihr Shell-Skripting zu übernehmen.


Linux
  1. So finden Sie die Länge der Zeichenfolge in Bash [Schneller Tipp]

  2. So prüfen Sie, ob String in Bash einen Teilstring enthält

  3. Vi- und Vim-Editor:12 leistungsstarke Beispiele zum Suchen und Ersetzen

  4. Verwenden von grep und sed zum Suchen und Ersetzen einer Zeichenfolge

  5. Finden Sie passenden Text und ersetzen Sie die nächste Zeile

Bash-Scripting – String-Manipulation

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

50 einfache und nützliche Beispiele für den Find-Befehl in Linux

Ersetzen einer Teilzeichenfolge durch eine andere Zeichenfolge in Bash

So verwenden Sie Sed zum Suchen und Ersetzen einer Zeichenfolge in einer Datei