• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

sed oder awk?

NeoMan

Member
Hi Leute,

nun brauch ich mal Eure Hilfe. Folgendes Problem:

Ich habe eine Textdatei, aus dieser möchte ich einen Abschnitt mit mehreren Zeile rauslöschen, anhand eines Schlagwortes. Nun bin ich kein sed bzw. awk Experte. Ich denke mit eins von den zwei Tools müßte das doch gehen.

Die Datei hat z.B. folgendes Format:

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName www.max-mustermann1.de
DocumentRoot /Pfad/zu/Document-root
User nobody
Group nobody
</VirtualHost>

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName www.max-mustermann2.de
DocumentRoot /Pfad/zu/Document-root
User nobody
Group nobody
</VirtualHost>

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName www.max-mustermann3.de
DocumentRoot /Pfad/zu/Document-root
User nobody
Group nobody
</VirtualHost>


Nun möchte ich z.B. durch das Wort max-mustermann2 den kompletten mittleren VirtualHost-Abschnitt rauslöschen. Die anderen zwei Abschnitte sollen natürlich drinne bleiben.

Also, sed und awk Freaks, ich bin für jeder Hilfe dankbar...

MfG NeoMan
 

imat

Member
Ich würde sed nehmen, weil ich mit awk ned so gut kann :)

Code:
sed -e '/Virtual/N;/max-mustermann2/,/\/Virtual/d' virtual.conf > newvirtual.conf
 
OP
N

NeoMan

Member
Ok, danke... imat, dein Ansatz hat mir schon viel geholfen. Habe das sed-Statement noch erweitert.

Und damit funktioniert es...

sed "/VirtualHost xxx.xxx.xxx.xxx:80/{:loop;N;/\/VirtualHost/!bloop;/\<max-mustermann2\>/d;}"


MfG NeoMan
 
Oben