PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux Script


Cyv
2011-03-23, 18:52:25
Hallo,

ich mache mir grad gedanken über ein Linux-Script.
Ich möchte eine Datei mit Hilfe eines Scriptes abändern.
Dazu Versehe ich die Datei mit einer eindeutigen Kommentar, an der ein Automatismus erkennen kann, dass er an dieser Stelle etwas einfügen soll.

Nachdem das Script die Datei bis zu diesem Kommentar gelesen hat, soll es nach dieser Stelle 3-4 Zeilen Code einfügen, ohne den nachfolgenden Text der Datei zu überschreiben.

Gibt es eine Art "ersetzen"-Befehl für solche Fälle?
Ich ahne schon, dass ich an dieser Stelle den sed benutzen muss, gibt es andere alternativen?

Lokadamus
2011-03-23, 21:56:54
mmm...

Mit Perl und/ oder awk müsste sowas gehen und mit sed geht es aufjedenfall.

Mit tr kann man auch Sachen ersetzen lassen, wobei ich nicht weiß, wie lang der Text bzw. die Zeichen sein können (cat Dingsbums.txt |tr "ErsetzMich" "durchMich" >Dingsbums1.txt).

Gast
2011-03-23, 21:58:28
Muss es bash sein? Mit ruby geht sowas sehr komfortabel:

$regexp_begin = <dein erkennungspattern>
f = File.open(name, "rw")
while line = f.gets
if $regexp_begin.match(line)
f.puts("deine änderung")
end
f.puts(line)
end

So oder ähnlich...

Odal
2011-03-23, 23:14:27
was stimmt mit sed nicht?


sed 's/MarkerPattern/Ersetzerstring/g' Quelldatei > tmp
mv tmp Quelldatei


oder versteh ich an deinem Vorhaben jetzt was falsch?

Cyv
2011-03-24, 08:22:41
Der sed funktioniert zwar mit kurzen textzeipen, aber ich möchte unter der gefundenen markierung 4-5 zeilen formatierten text einfügen. Weiß nicht wie ich das mit dem sed machen soll :(

Odal
2011-03-24, 08:56:18
naja mit steuerzeichen z.b. also \n \t etc. oder deine zeilen in eine Datei schreiben und per bla=cat ersetzungsdatei

und als ersetzungsstring im sed dann $bla verwenden sollte doch gehen (nicht getestet)

wobei das mit der variable geht wohl nicht da müsste man dann awk verwenden