Suchen nach String und Ersetzen zeilenweise

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von AlexNBG276, 08.01.2009.

  1. #1 AlexNBG276, 08.01.2009
    AlexNBG276

    AlexNBG276 Jungspund

    Dabei seit:
    12.12.2008
    Beiträge:
    12
    Zustimmungen:
    0
    Hallo,

    ich habe folgendes Problem:

    ich möchte in einer großen Textdatei die zeilenweise folgendermaßen aufgebaut ist nach einem String suchen, und wenn eine Übereinstimmung gefunden ist, mehere Texte in der Zeile ersetzen. Zur Veranschaulichung:

    aus
    Text1;Text2;Text3;Text4;Text5;Text6

    wenn bei "Text3" eine Übereinstimmung gefunden wurde, soll werden

    neuerText1;Text2;neuerText3;Text4;Text5;Text6

    (Jede Zeile hat die gleiche Anzahl von "Text-Strings" (durch Simikolon von einander getrennt))

    Ich denke, das kann man mit "sed" machen...

    Freue mich über Eure Hinweise/Hilfe!
     
  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. larry

    larry Tripel-As

    Dabei seit:
    27.11.2007
    Beiträge:
    159
    Zustimmungen:
    0
    Hallo,
    wenn es nur nach der 3. Spalte geht:
    Code:
    sed 's/.*;\(.*\);Text3;/neuerText1;\1;neuerText3;' file
     
  4. #3 AlexNBG276, 08.01.2009
    AlexNBG276

    AlexNBG276 Jungspund

    Dabei seit:
    12.12.2008
    Beiträge:
    12
    Zustimmungen:
    0
    Dankeschön,

    ok, habe mich vorhin verschrieben - suche nach Übereinstimmung in Text4, muss es denn so aussehen?

    sed 's/.*;\(.*\);Text4;/neuerText1;\1;\2;neuerText4;' file

    sind den \1;\2; die Platzhalter für die Spalten 2 und 3, in denen nichts ersetz wird?
     
  5. larry

    larry Tripel-As

    Dabei seit:
    27.11.2007
    Beiträge:
    159
    Zustimmungen:
    0
    Nein, wenn du bei dem Muster einen Ausdruck mit \( \) umschließt, kannst du den ersten umschlossenen Ausdruck mit \1 wieder einfügen den zweiten mit \2 usw.
    Das ganze würde dann so aussehen:
    Code:
    sed 's/.*;\(.*;.*\);Text4/neuerText1;\1;neuerText4/' test
     
  6. #5 AlexNBG276, 08.01.2009
    AlexNBG276

    AlexNBG276 Jungspund

    Dabei seit:
    12.12.2008
    Beiträge:
    12
    Zustimmungen:
    0
    Vielen Dank! - klappt
     
  7. #6 Gott_in_schwarz, 08.01.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ich find das mit awk wesentlich klarer zu sehen was da abläuft:
    Code:
    echo 'Text1;Text2;Text3;Text4;Text5;Text6' |
    awk -F';' '{if ($3 == "Text3") { printf "%s;%s;%s;%s;%s;%s\n", "neuerText1", $2, "neuerText3", $4, $5, $6 }}'
    oder auch so: (muss man allerdings den output field seperator (OFS) auf ";" stellen)
    Code:
    echo 'Text1;Text2;Text3;Text4;Text5;Text6' |
    awk -F';' 'BEGIN{OFS=";"} {if ($3 == "Text3") {$1 = "neuerText1"; $3 = "neuerText3"; print $0}}'
    Man testet hier offensichtlich die dritte Spalte auf das Auftreten eines bestimmten Strings und verändert dann nur Spalte 1 und 3.
    (Ich benutz hier gawk, nur zur info.)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Suchen nach String und Ersetzen zeilenweise

Die Seite wird geladen...

Suchen nach String und Ersetzen zeilenweise - Ähnliche Themen

  1. Chemnitzer Linux-Tage suchen nach Beiträgen

    Chemnitzer Linux-Tage suchen nach Beiträgen: Für die am 21. und 22. März 2015 stattfindenden Chemnitzer Linux-Tage ist der »Call for Lectures« online. Gesucht werden Beiträge, die unter...
  2. nach einem wort in einer textdatei suchen

    nach einem wort in einer textdatei suchen: halloooo ihr lieben, ich hoffe ihr könnt mir weiterhelfen :) ich lernen momentan die skriptsprache shell und alles was dazu gehört. ich soll...
  3. Chemnitzer Linux-Tage 2014 suchen nach Vorträgen

    Chemnitzer Linux-Tage 2014 suchen nach Vorträgen: Für die am 15. und 16. März 2014 stattfindenden Chemnitzer Linux-Tage ist nun der so genannte »Call for Lectures« online. Gesucht werden Beiträge...
  4. LibreOffice lässt nach Fehlern suchen

    LibreOffice lässt nach Fehlern suchen: In einem neuen Wettbewerb lässt das LibreOffice-Projekt nach Fehlern suchen und ruft alle Anwender und Interessenten dazu auf, Bugs zu suchen, zu...
  5. Nach Inhalt in Dateien suchen und den String aus Datei löschen

    Nach Inhalt in Dateien suchen und den String aus Datei löschen: Hallo alle miteinander, ich bin auf der Suche nach einer Möglichkeit nach Dateien mit einem bestimmten Inhalt zu suchen. Wenn der String in der...