Shell: String abschneiden oder entfernen (Teilstring)

In diesem Artikel wird sich verschiedener Möglichkeiten angenommen innerhalb eines Shell-Scriptes Strings vorne oder hinten abzuschneiden. Dazu werden String-Operationen mit Prozentzeichen (%), Hash-Zeichen (#) oder Rautezeichen (#) durchgeführt.

Zeichen/String hinten abschneiden

Es gibt folgende Möglichkeiten um denn vorderen Teil des Strings zurückzugeben.

1. % (eine Prozentzeichen)
Entfernen des kürzest möglichen String von Rechts; also von hinten.

Beispiel 1.1.:

Beschreibung: Das erste Vorkommen mehrer Zeichen inkl. einem Punkt wird entfernt.

Ausgabe:

2. %% (zwei Prozentzeichen)
Entfernen des längsten möglichen String von Rechts; also von hinten.

Beispiel 2.1.:

Beschreibung: Das alle Zeichen inkl. dem letzt möglichen Punkt wird entfernt.

Ausgabe:

Zeichen/String vorne abschneiden

Folgende Varianten geben jeweils hinteren Teil eines String zurück.

3. # (eine Hash-Zeichen bzw. Rautenzeichen)
Entfernt von Links, denn kürzest möglichen String.

Beispiel 3.1.:

Beschreibung: Alle Zeichen  inkl. dem ersten Vorkommen Slashs werden von Links entfernt; also hier nur der erste Slash.

Ausgabe:

Beispiel 3.2.:

Beschreibung: Alle Zeichen  inkl. dem ersten Vorkommen des Punktes werden von Links entfernt.

Ausgabe:

4. ## (zwei Hash-Zeichen bzw. Rautenzeichen)
Entfernt von Links, denn längsten möglichen String.

Beispiel 4.1.:

Beschreibung: Alle Zeichen inkl. dem letzt möglichen Slash werden von Links entfernt.

Ausgabe:

Beispiel 4.2.:

Beschreibung: Alle Zeichen inkl. dem letzt möglichen Punkt werden von Links entfernt.

Ausgabe:

(Visited 3.095 times, 1 visits today)

7 Comments Shell: String abschneiden oder entfernen (Teilstring)

  1. Schwarzes Tigerle

    Danke, man könnte auch mit cut und tr rumwerken, aber so ist es kürzer und einfacher…

    Für Bash-Scripte um den Scriptnamen / Scriptpfad zu erfahren…

    #!/bin/bash
    ScriptName=${0##*/};
    # get from Variable 0 : Charposition 0 : 1 Char and test if it’s ‚/‘
    if [ ${0:0:1} == ‚/‘ ]; then
    # Variable 0 contains a path (first char is ‚/‘)
    ScriptPath=${0%/*};
    else
    # Variable does not contain a path (first char is not ‚/‘)
    # script is was called with „./scriptname“ or „. scriptname“
    # so the script should reside in the current working directory….
    ScriptPath=$PWD;
    fi;

    Reply
  2. Christian Kmaenn

    vielen dank
    an dich mein
    namensvetter!
    ich war schon im begriff mir die haare zu raufen wegen so einem bösen slash was absolut nicht von sed -i zu beeindrucken war… xD you made my day THX 🙂

    Reply
  3. Kevin

    top!
    wie kann ich etwas vor und etwas nach einem bestimmten wort entfernen? (im gleichen befehl)
    also zb.
    aaa.bbb.ccc
    ich mochte nur bbb haben.
    😀

    Reply
  4. Ralle

    Wie kann ich in einer Zeile ermitteln wie der Pfad des gestarteten Scripts lautet?

    Das VALUE in

    echo ${VALUE%/*}

    soll hier direkt durch die Ausgabe von

    „$(readlink -f ${0})

    ersetzt werden.

    Danke sehr.

    Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.