Zeichen zwischen Zeichenfolge anzeigen lassen

Diskutiere Zeichen zwischen Zeichenfolge anzeigen lassen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo, ist es mit sed oder einem anderen Programm möglich sich die Zeilen die zwischen einer speziellen Zeichenfolge liegen anzuzeigen?...

  1. Ivi

    Ivi Jungspund

    Dabei seit:
    27.07.2016
    Beiträge:
    16
    Zustimmungen:
    0
    Hallo,

    ist es mit sed oder einem anderen Programm möglich sich die Zeilen die zwischen einer speziellen Zeichenfolge liegen anzuzeigen? Angenommen in einem Dateinamen oder in einer Textzeile steht

    Code:
    {{zu-suchende-zeichenkette}}
    dann soll alles zwischen '{{’ und ’}}’ angezeigt werden. Die Klammern fungieren hier sozusagen als Separator zum sonstigen Text.

    Ivi
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 hellfire, 05.04.2018
    hellfire

    hellfire Doppel-As

    Dabei seit:
    25.05.2016
    Beiträge:
    129
    Zustimmungen:
    15
    ja geht mit grep...

    Code:
    grep -Po '(?<={{).*(?=}})'
    Womit Du Dich beschäftigen kannst, um das zu lernen:
    • man grep
    • Reguläre Ausdrücke
    Das RegEx-Feature nennt sich Lookahead/Lookbehind. Das ist eine "Zusicherung", das etwas davor bzw. danach kommen muss.

    Warnung aus der Manpage von grep dazu
    Code:
    echo "Ich bin ein {{gruener}} Nasenbaer" | grep -Po '(?<={{).*(?=}})'
    
    --> Ausgabe:
    
    gruener
    
    
     
  4. Pik-9

    Pik-9 Tripel-As

    Dabei seit:
    04.12.2008
    Beiträge:
    215
    Zustimmungen:
    4
    Geht mit sed genauso:
    Code:
    echo "Ich bin ein {{gruener}} Nasenbaer." | sed 's/.*{{\(.*\)}}.*/\1/g'
    ;)
    Viele Grüße,
    Pik-9
     
  5. #4 fresh$free, 10.06.2018
    fresh$free

    fresh$free Mitglied

    Dabei seit:
    03.10.2013
    Beiträge:
    29
    Zustimmungen:
    0
    Lookahead/behind ist hier überflüssig, PerlRegexp auch, dafür reichen Extended RegExp völlig aus.
     
  6. #5 Greatbrian, 05.08.2019
    Greatbrian

    Greatbrian Grünschnabel

    Dabei seit:
    05.08.2019
    Beiträge:
    4
    Zustimmungen:
    0
    Stehe vor einem ähnlichem Problem was ich mit den Beispielen oben bisher nicht lösen kann. Ich möchte die Inhalte rausfiltern, wenn mehrere {inhalt1},{inhalt2} vorhanden ist,

    Beispiel:

    echo 'Task=6,"hallo" ->"hallo welt {inhalt}, {inhalt2} or {inhalt3}?", setbla(1,1), Task=7' | grep -oP '(?<={).*(?=})'

    inhalt}, {inhalt2} or {inhalt3

    bitte einen Tipp, wie ich die Drei Werte rausfiltern kann, wenn Sie in einer Zeile hintereinander bzw. mehrfach vorhanden sind?
     
  7. Pik-9

    Pik-9 Tripel-As

    Dabei seit:
    04.12.2008
    Beiträge:
    215
    Zustimmungen:
    4
    Hilft dir
    Code:
    echo 'Task=6,"hallo" ->"hallo welt {inhalt}, {inhalt2} or {inhalt3}?", setbla(1,1), Task=7' | grep -o "{.*}"
    weiter?
    Wenn nicht, musst du nochmal genau sagen, in welchem Format du die Daten brauchst und ggf. weiter filtern.

    Viele Grüße,
    Pik-9
     
  8. #7 Greatbrian, 05.08.2019
    Greatbrian

    Greatbrian Grünschnabel

    Dabei seit:
    05.08.2019
    Beiträge:
    4
    Zustimmungen:
    0
    Hi Pik-9

    danke schon mal, aber zum besseren Verständnis kurz mal der Inhalt der Datei:

    Code:
    Zeile1 Task=6,"hallo" ->"hallo welt {inhalt}, {inhalt2} or {inhalt3}?", setbla(1,1), Task=7
    Zeile2 Task=7,"hallo" ->"hallo welt {inhalt4}", setbla(1,1), Task=8
    Nun benötige ich als Ausgabe alle Werte innerhalb der geschweiften Klammer, also:

    inhalt
    inhalt2
    inhalt3
    inhalt4
     
  9. Pik-9

    Pik-9 Tripel-As

    Dabei seit:
    04.12.2008
    Beiträge:
    215
    Zustimmungen:
    4
    In dem Fall versuche mal:
    Code:
    grep -Po '(?<={)[[:alnum:]]+(?=})' <file.txt>
    Viele Grüße,
    Pik-9
     
  10. #9 Greatbrian, 06.08.2019
    Greatbrian

    Greatbrian Grünschnabel

    Dabei seit:
    05.08.2019
    Beiträge:
    4
    Zustimmungen:
    0
    Vielen Dank @Pik-9
     
Thema:

Zeichen zwischen Zeichenfolge anzeigen lassen

Die Seite wird geladen...

Zeichen zwischen Zeichenfolge anzeigen lassen - Ähnliche Themen

  1. Perl string zwischen Hochkomma und Anführunsgzeichen wandeln

    Perl string zwischen Hochkomma und Anführunsgzeichen wandeln: Hey Leute, hab ne Frage. Möchte eine Formel in einer Perl Ausgabe darstellen. als Beispiel: Zeile im Skript:Formel: $ergebnis = $wert1 +...
  2. sed, awk oder cut : Zeichen innerhalb einer Zeichenkette kopieren

    sed, awk oder cut : Zeichen innerhalb einer Zeichenkette kopieren: Hallo Unixboard :) Ich möchte gerne in der shell die Ausgabe eines Befehls modifizieren. Sodass innerhalb einer Zeile ein Teil der Zeile noch an...
  3. leerzeichen vor und nach einem STRING löschen

    leerzeichen vor und nach einem STRING löschen: Hallo Zusammen, ich muss in einer Datei die LEERZEICHEN vor und nach einem STRING entfernen, aber nicht innerhalb des Strings. Die STRINGS sind...
  4. Ein Wort hinter einer bestimmten Zeichenfolge suchen und ausgeben

    Ein Wort hinter einer bestimmten Zeichenfolge suchen und ausgeben: Hallo, ich habe eine Datei, die ich nach bestimmten Wörtern durchsuchen und, wenn gefunden, x Zeichen hinter sdiesem Wort ausgeben möchte....
  5. gnu parallel Zeichen lesen und Wert berechnen

    gnu parallel Zeichen lesen und Wert berechnen: Hallo, ich würde gerne "GNU parallel" dazu nutzen, aus einer Liste von Zeichen, die sich in einer Datei befinden, einen MD5 Hash zu berechnen....
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden