PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit sed



h0sch1
12.07.02, 12:06
Hi @ll

Ich bin gerade dabei und schreib mir ein Webfrontend für mein Firewall-Script.
In dem Formular kann ich die Einstellungen anpassen und schicke diese an ein cgi Script das mir die Konfigfile anpassen soll.
Das sieht dann z.B. so aus:

#!/bin/bash -f

file='/tmp/firewall.conf'
tmp_out="/tmp/new-fw.$$.txt"


sed "s/^\([ ]*masq_lan='\)[^']*\('.*\)$/\1$w3_masq_lan\2/" <"$file" >"$tmp_out"



In der Variable w3_masq_lan steht z.B. folgendes drin:
192.168.100.0/24

Mein Problem ist der Slash, der die IP-Adresse von der Subnetmask trennt.
Gib es da Irgendeine Option für den sed, dass er den Slash in der Variable nicht als Befehl her nimmt.

Danke schon mal

Hoschi

anda_skoa
12.07.02, 17:06
Du könntest das file zuerst durch tr pipen, dann in das sed



cat $file | tr "/" "#" | sed


ersetzt alle / durch #

Vielleicht hat einer der Gurus im Scriptsprachenforum einen besseren Vorschlag.
-> www.mrunix.de

Ciao,
_

pitu
12.07.02, 17:39
Du kannst auch andere zichen als trenner in sed nehmen, z.B. # oder ! oder so.

pitu

h0sch1
15.07.02, 19:02
Hi

@pitu

Danke hat funktioniert

Hoschi

panzi
15.07.02, 19:33
Funktioniert mit sed nicht auch "\/" für "/"?

Matzetronic
15.07.02, 22:01
@panzi

jupp, das müßte auch gehen: sed s/\/// ersetzt dann den / durch nix.
:D

matze

h0sch1
18.07.02, 17:57
HI

sed s/\/// ersetzt dann den / durch nix.

Das geht schon.
Aber wenn der / in einer Variable drin ist die ich dem sed zum erstetzen gebe nicht.
================================================== ====

sed "s/^\([ ]*masq_lan='\)[^']*\('.*\)$/\1$w3_masq_lan\2/" <"$file" >"$tmp_out"



In der Variable w3_masq_lan steht z.B. folgendes drin:
192.168.100.0/24
================================================== ====

Jetzt lautet die Zeile so und es funktioniert:

sed "s#^\([ ]*masq_lan='\)[^']*\('.*\)\$/#1$w3_masq_lan\2#" <"$file" >"$tmp_out"



Hoschi