Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilen in einer Datei ersetzen



Martin Ament
24-04-2003, 16:56
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

phate
24-04-2003, 20:29
Ist kein awk / sed - Konstrukt sondern mal wieder was PERLiges aber den Job tuts allemal.
#!/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