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 7.023 times, 1 visits today)

9 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
  5. mark

    äääh ja ich hab mich die letzten 3h mit sed versucht… erfolglos
    Danke die suche nach der lösung hat ein ende!

    Reply

Schreibe einen Kommentar

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