Hallo,
ich versuche in einer Config-Datei eine Zeile (die eindeutig identifizierbare ist) und die nächste (die doppelt vorkommen kann) per sed zu editieren. Diese lautet
[Directories/Export] Default=/pfad/zum/ordner
Das Problem ist der Zelenumbruch, der nicht einfach mit
sed -i 's#\n##g' file
ersetzt werden kann. Was geht ist
sed -i '{:q;N;s/\[Directories\/Export\]\nDefault=.*$/\[Directories\/Export\]\nDefault=\/pfad/g;t q}' file
(ich muss aber zugeben, dass ich nicht verstehe wieso). Ich habe das ganze zunächst mit einer einfachen Textdatei versucht die nur die beiden Zeilen enthält, hier geht es. Teste ich das dann an der ganzen cfg geht das nicht. Hab ein paar Versuche gemacht, wenn ich eine bestimmte Zahl an Zeilen über dem zu ersetzen Teil lösche geht es oder nicht. Wenn der Text
[Directories/Export]
auf Zeile 17 oder kleiner steht geht alles, ab Zeile 18 geht nichts.
Kann sich das jemand erklären? Vor allem würde mich interessieren wieso hier ein einfaches Suchen+Ersetzen mit \n nicht geht.
P.S. Laut 'od -c file' ist der Zeilenumbruch '\n' korrekt.