Strings ersetzen

Diskutiere Strings ersetzen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen, ich möchte in einer oder mehreren Dateien einen vorgegebenen String durch einen anderen String ersetzen. Eine Datei sieht z.B....

  1. #1 MrBourne, 26.03.2006
    MrBourne

    MrBourne Grünschnabel

    Dabei seit:
    26.03.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo zusammen,

    ich möchte in einer oder mehreren Dateien einen vorgegebenen String durch einen anderen String ersetzen.
    Eine Datei sieht z.B. wie folgt aus :
    #testdatei
    name='test'
    name1=test
    name2="test"
    #END

    Das Skript soll nur 'test' durch 'test1' ersetzen. name1 und name2 sollen
    aber nicht geändert werden!

    sed 's/'test'/'test1'/g' < datei > datei.neu

    funktioniert leider nicht.

    sed 's/"'test'"/"'test1'"/g' < datei > datei.neu
    oder
    sed 's/\'test\'/\'test1\'/g' < datei > datei.neu

    leider auch nicht.
    Mit tr bekomme ich es irgenwie auch nicht hin.
    Da ich eigentlich aus der MS-Ecke komme, bin ich mit dem Quoting und
    regulären Ausdrücke noch nicht so wirklich fit.
    Vielleicht kann mir jemand auf die Sprünge helfen.
    Besten Dank schon einmal.

    Gruß
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 26.03.2006
    Zuletzt bearbeitet: 26.03.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Warum nicht einfach so?
    sed -e 's/test/test1/g' datei > datei.neu

    tr kann nur einzelne Zeichen ersetzen/löschen.

    Gruß Wolfgang

    Edit:
    wenn du wirklich die Hochkomma mit einfangen willst ( was ich in deinem Beispiel aber für übeflüssig gehalten habe) dann wird es etwas tricky:
    ;)
    sed -e 's/'\''test'\''/'\''test1'\''/g'
    oder einfache in doppelte:
    sed -e 's/'\''test'\''/'\"'test1'\"'/g'
     
  4. #3 MrBourne, 26.03.2006
    MrBourne

    MrBourne Grünschnabel

    Dabei seit:
    26.03.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Wolfgang,

    danke erst einmal für die schnelle Antwort.

    sed -e 's/test/test1/g' datei > datei.neu

    würde aber jedes test ersetzen. Es soll aber nur 'test' ersetzt werden
    (test oder "test" sollen nicht angerührt werden).

    Gruß
    MrBourne
     
  5. #4 Wolfgang, 26.03.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Hoffe mein EDIT des ersten Beitrages war das was du wolltest.
    Nochmal für 'test'
    sed -e 's/'\''test'\''/'\''test1'\''/g'
    Hier noch für die "test"
    sed -e 's/'\"'test'\"'/'\"'test1'\"'/g'

    HTH
    Gruß Wolfgang
     
  6. #5 MrBourne, 26.03.2006
    MrBourne

    MrBourne Grünschnabel

    Dabei seit:
    26.03.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Wolfgang,

    das 2. Beispiel für die "test" läuft.
    Das 1. für 'test' ersetzt aber auch nur die "test".

    Das würde ja auch einfacher mit sed -e 's/\"test\"/\"test1\"/g' laufen.

    Gruß
    MrBourne
     
  7. Anzeige

    Vielleicht findest du in dieser Kategorie etwas passendes.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 Wolfgang, 26.03.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Sicher hast du da einen Fehler drin.
    Das rote sind zwei Hochkomma (2* ') und nicht ein doppeltes "!
    sed -e 's/'\''test'\''/'\''test1'\''/g'

    Gruß Wolfgang
    PS Kopier das mal, dann wirst du es sehen.
     
  9. #7 MrBourne, 26.03.2006
    MrBourne

    MrBourne Grünschnabel

    Dabei seit:
    26.03.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Wolfgang,

    tja man muss es nur richtig machen und schon geht es :)
    Aber wie gesagt, solange beschäftige ich mich mit dem Thema
    noch nicht.

    Thanx noch einmal für die superschnelle und kompetente Hilfe ....

    Gruß
    MrBourne
     
Thema: Strings ersetzen
Besucher kamen mit folgenden Suchen
  1. sed zeichenketten ersetzewn

    ,
  2. linux bash string ersetzen

    ,
  3. sed ersetzen string

    ,
  4. bash test ersetyen,
  5. sed ersetze string mit string,
  6. sed sonderzeichen in suchstring,
  7. linux string zeichen ersetzen,
  8. sed linux ersetzen,
  9. sed strings ersetzten,
  10. sed zeichen im string ersetzen,
  11. sed ersetzen,
  12. sed string ersetzen
Die Seite wird geladen...

Strings ersetzen - Ähnliche Themen

  1. Editor, ersetzen von strings im mehreren Files

    Editor, ersetzen von strings im mehreren Files: Hallo, ich suche einen einfachen buttonorientierten Editor, der mir einen String in zahlreichen geladenen Textfiles gleichzeitig ersetzt,...
  2. Strings vergleichen und ersetzen

    Strings vergleichen und ersetzen: Hallo! ich komme bei meinem Problem irgendwie nicht weiter. Ich habe zwei Log Dateien, in der ersten stehen logs mit einer falschen IP (die mir...
  3. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  4. alles außer letzte 4 strings

    alles außer letzte 4 strings: Hallo, ich habe verschieden lange Strings (Dateinamen) und möchte gerne den Dateinamen als Variable ausgeben: 1. Strings...
  5. Mehere Strings aus unterschiedlichen Zeilen zusammenführen

    Mehere Strings aus unterschiedlichen Zeilen zusammenführen: hi@all, stehe vor einem Problem und habe keine Ahnung wie ich vorgehen kann. Folgende Aufgabenstellung: Ich habe eine große Text Datei und...