hilfe bei sed

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von todd#6, 27.11.2012.

  1. todd#6

    todd#6 Jungspund

    Dabei seit:
    22.11.2012
    Beiträge:
    13
    Zustimmungen:
    0
    Erstellen Sie ein Sed Skript das in einer Textdatei in allen Wörtern, die mit einem großen G beginnen und den String „zwerg“ enthalten, das große G durch ein kleines g ersetzt sowie den String „zwerg“ verdoppeln.
    Beachten Sie: Wörter werden daran erkannt, dass unmittelbar vor und nach dem Wort kein Buchstabe und keine Ziffer steht.
    Beispiel: Aus dem Wort „Gartenzwerg“ soll „gartenzwergzwerg“

    das ist die datei in dem das sed script suchen soll:
    Gartenzwerg
    Gzwerg
    Hundezwerg
    Gartenzwerga
    Gzwerg1
    Hundezwerg
    1Gzwerg1

    irgendwie klappt das bei mir nicht habe ersr das "G" durch das kleine ersetzt mit der y option

    y/G.\{1,\}zwerg/g.\{1,\}zwerg/
    s/g.\{1,\}zwerg/g.\{1,\}zwergzwerg/

    der output sieht wie folgt aus:

    g.{1,}zwergzwerg
    gzwerg
    Hundezwerg
    g.{1,}zwergzwerga
    gzwerg1
    Hundezwerg
    1gzwerg1

    kann es mir leider nciht erklären. hat jemand ein tipp für mich was ich falsch machen
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tgruene, 27.11.2012
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    ein paar Punkte zur Hilfe:
    1) in dem Ersatzteil, d.h., dem Teil innerhalb der zweiten '//', solltest Du nur '\1' benutzen, um Dich auf den entsprechenden Teil in der RegExp zu beziehen
    2) Das Ersetzen von G durch g kannst Du auch gleich innerhalb von "s///" erledigen
    3) Du hast nicht beachtet, was in der Augabenstellung mit "Beachten Sie" eingeleitet wird ;-)
     
  4. todd#6

    todd#6 Jungspund

    Dabei seit:
    22.11.2012
    Beiträge:
    13
    Zustimmungen:
    0
    s/[^A-F][^H-Z][^a-f][^h-z][^0-9]G.\1zwerg[^A-Z][^a-z][^0-9]/g.\1zwergzwerg/

    ich kann leider meinen fehler nicht finden. könnte mir jemand vll nochmal einen tipp geben?
     
  5. todd#6

    todd#6 Jungspund

    Dabei seit:
    22.11.2012
    Beiträge:
    13
    Zustimmungen:
    0
    verstehe es einfach nicht.

    das egal was ich eingebe mein kompletter input ausgegeben wird. obwohl ich alles verneine.

    könnte mir einer ein beispiel sytax hier posten wie man sich eine zeichenkette merken kann.
     
  6. #5 floyd62, 27.11.2012
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    um dir eine Zeichenkette zu "merken", musst du sie im Suchstring mit \( und \) einfassen; dann kannst du darauf im Ersetzungstext mit \1, \2, ... zugreifen, also etwa
    Code:
    $ echo abc | sed -e 's/\(a\)\(.*\)\(c\)/\3\2\2\1/'
    cbba
    $
    A.
     
  7. todd#6

    todd#6 Jungspund

    Dabei seit:
    22.11.2012
    Beiträge:
    13
    Zustimmungen:
    0
    das mit dem string merken geht wunderbar.
    s/^G\.*\(zwerg\)/g.*\1\1/
    aber warum klappt .* nicht
    .= 1beliebiges Zeichen
    *=0-unendlich wiederholungen
     
  8. #7 todd#6, 27.11.2012
    Zuletzt bearbeitet: 27.11.2012
    todd#6

    todd#6 Jungspund

    Dabei seit:
    22.11.2012
    Beiträge:
    13
    Zustimmungen:
    0
    habe es glaubig

    s/^G\(.*\)\(zwerg\)$/g\1\2\2/

    eigentlich ganz einfach wenn man das schonmal ein paar mal hätte machen müssen
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 floyd62, 27.11.2012
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Das funktioniert auf jeden Fall schon mal teilweise - aber nur einmal pro Zeile (also noch nicht für jedes Wort), und nur, wenn das G am Zeilenanfang und der zwerg am Ende stehen ...
     
  11. #9 todd#6, 27.11.2012
    Zuletzt bearbeitet: 28.11.2012
    todd#6

    todd#6 Jungspund

    Dabei seit:
    22.11.2012
    Beiträge:
    13
    Zustimmungen:
    0
    tipp`??
    wie macht man so was?

    g (global) alle auf den Ausdruck passenden Textteile werden
    ersetzt
    Macht man das vll so?

    s/\bG\(.*\)\(zwerg\)\b/g\1\2\2/g

    habe die input datei erweitert mehrer wörter stehen nun in einer zeile.
    Gartenzwerg hund katze Gartenzwerg
    Gzwerg hund katze Gartenzwerg
    Hundezwerg hund katze Gartenzwerg
    Gartenzwerga hund katze Gartenzwerg
    Gzwerg1 hund katze Gartenzwerg
    Hundezwerg hund katze Gartenzwerg
    1Gzwerg1 hund katze Gartenzwerg

    der output sieht sehr komisch aus

    gartenzwerg hund katze Gartenzwergzwerg
    gzwerg hund katze Gartenzwergzwerg
    Hundezwerg hund katze gartenzwergzwerg
    gartenzwerga hund katze Gartenzwergzwerg
    gzwerg1 hund katze Gartenzwergzwerg
    Hundezwerg hund katze gartenzwergzwerg
    1Gzwerg1 hund katze gartenzwergzwerg

    irgedwie macht sed ein mischmasch daraus
     
Thema:

hilfe bei sed

Die Seite wird geladen...

hilfe bei sed - Ähnliche Themen

  1. Hilfe.

    Hilfe.: Hallo ich habe centos 7.2.15.11 Ich habe die .rpm Dateien von Epson direkt installiert, aber sonst nichts. Nachdem ich im Terminal...
  2. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  3. [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

    [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter: Hallo zusammen, ich bin an einem Punkt angekommen, wo ich nicht mehr weiter komme und hoffe ihr könnt mir weiter helfen. Anbei ein Ausschnitt aus...
  4. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...
  5. Anfänger braucht Hilfe bei DVB-S Installation

    Anfänger braucht Hilfe bei DVB-S Installation: Hallo, ich habe ein Problem. Ich habe openSuse 13.2 frisch installiert. Jetzt soll ein usb-TV-Modul TEVII s660 funktionieren. Ich kann bereits...