Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Zeilen in einer Datei ersetzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.01.2000
    Ort
    München-Moosach, Bayern
    Beiträge
    131

    Zeilen in einer Datei ersetzen

    Hallo Leute,

    ich kämpfe nun schon längere zeit mit sed und awk, aber irgendwie haut es bei mir nicht so richtig hin.

    Ich habe eine Datei mit configeinstellungen.

    Ich will nun prüfen, ob ein bestimmter Ausdruck (#### Igweb #####) vorkommt.
    Gut das habe ich schon mal mit grep hingekriegt.

    Wenn es nicht vorkommt, dann werden fest definierte Configeinstellungen eingefügt.
    Das schaffe ich auch noch.

    Wenn nun aber schon Einstellungen drinnen sind, dann komme ich nicht mehr weiter.

    Es soll die die Daten zwischen zwei Trennern
    #### Igweb #####
    config1
    config2
    #### Igweb #####

    ersetzt werden durch die neuen Einstellungen.

    Im Prinzip reicht es zwischen Trenner und Trenner zu löschen, und dann den Inhalt der neuen Configdatei anzuhängen.

    Danke Martin
    Wer ist weisse ?
    Der von jedem Menschen etwas lernen kann.

  2. #2
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Ist kein awk / sed - Konstrukt sondern mal wieder was PERLiges aber den Job tuts allemal.
    Code:
    #!/usr/bin/perl
    
    use strict;
    undef $/;
    
    my $config_file = "./pfad/zur/config.cfg";
    my $new_conf = <<EOC;
    hier die neuen config-zeilen
    hier die neuen config-zeilen
    hier die neuen config-zeilen
    EOC
    
    open IN, "<$config_file";
    my $file_content = <IN>;
    close IN;
    
    $file_content =~ s/(#### lgweb ####).*?(\1)/\1\n$new_conf\1/s;
    
    open OUT, ">$config_file";
    print OUT $file_content;
    close OUT;
    Ohne Sicherheitsüberprüfungen ob öffnen oder schreiben erfolgreich waren.

    HTH,

    phate

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •