[Linux] In Datei Zeile suchen und ersetzen

Dieses Thema im Forum "Linux & BSD" wurde erstellt von dreamax, 15. Juli 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Juli 2010
    Guten Tag,

    Ich habe ein simples Problem bei dem ich z.Z. allerdings fest hänge.
    Zur verfuegung steht mir nvi,sed und alle anderen Standard Linux Tools.

    Ich will folgendes haben, ein Kommando welches folgendes Code1 in Code2 umsetzt (ist ein Dateiinhalt welcher nach der aenderung wieder in diese gespeichert werden soll):

    Code1:
    Code:
    ...
    parameter1 = random
    parameter2 = random
    ...
    parameter1 = random
    parameter2 = random
    ...
    
    Parameter1/2 sind dabei feste konfigurations- variablen von denen ich die Namen weis und welche sich nicht ändern, "random" ist ein Wert (Text oder zahl) welchen ich nicht kenne.

    Code2:
    Code:
    ...
    parameter1 = FEST
    parameter2 = FEST
    ...
    parameter1 = FEST
    parameter2 = FEST
    ...
    
    Die Namen der konfigurations- variablen bleiben gleich, der wert soll in einen Festen wert geändert werden (den ich natürlich angebe).

    mfg
    dreamax
     
  2. 15. Juli 2010
    AW: [Linux] In Datei Zeile suchen und ersetzen

    Mit sed ginge das so:

    Code:
    pyro@exuma:~ $ cat test.txt 
    parameter1 = random
    parameter2 = random
    parameter1 = random
    parameter2 = random
    pyro@exuma:~ $ sed -e "s/\(\\w*\) = \\w*/\\1 = FEST/g" test.txt 
    parameter1 = FEST
    parameter2 = FEST
    parameter1 = FEST
    parameter2 = FEST
    Den regex musst du eventuell anpassen. Auf der bash sieht das ganze auch noch so unschön aus, da man (, ) und \ escapen muss.
     
  3. 15. Juli 2010
    AW: [Linux] In Datei Zeile suchen und ersetzen

    schonmal vielen dank darfuer, da ich damit noch nicht gearbeitet habe, stelle ich mir die frage wo ich parameter1 bzw. parameter2 in den befehl einbinden muss? Ansonsten aendert es mir alle werte ( * = FEST).

    Vielen Dank!
     
  4. 15. Juli 2010
    AW: [Linux] In Datei Zeile suchen und ersetzen

    Hoi,

    der reguläre Ausdruck, nachdem sed sucht ist folgender:
    Code:
    (\\w*\) = \\w*
    \w* matcht auf alle Worte, der Ausdruck matcht also auf beliebig viele Worte, die durch ein " = " voneinander getrennt sind. Die () um das erste \w* sind ein sog. Submatch. Im Ersetzungsregex kann man auf den Text innerhalb der Klammern zurückgreifen, in dem man \1 schreibt.
    Die \ sind nur da, weil man in der Bash eben \, ( und ) escapen muss.

    Wenn du die parameter-namen die ersetzt werden sollen, selbst festlegen willst, dann kannst du das so machen:
    Code:
    sed -e "s/\(parameter1\) = .*/\\1 = FEST/g" test.txt
    Hier wird auch wieder im Ersetzungsregex mit \1 auf das erste Submatch (hier: parameter1) zurückgegriffen.
     
  5. 16. Juli 2010
    AW: [Linux] In Datei Zeile suchen und ersetzen

    Okay, perfekt.. vielen dank!

    close.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.