Strona 1 z 1

[+] BASH i grep, usuwanie ciągu tekstu z pliku

: 28 sierpnia 2014, 15:39
autor: bagsiur
Witam wszystkich użyszkodników po dłuższej przerwie ;)

Piszę system podobny do directAdmin. Utknąłem w jednym miejscu i jak na razie moje próby kończą się fiaskiem:

mam plik /etc/bind/named.conf.local z którego chcę usunąć jedną strefę. Przykładowy plik:

Kod: Zaznacz cały

 zone "example.com.pl" {
         type master;
         file "/var/cache/bind/example2.com.pl.hosts";
         };
 zone "example2.com.pl" {
         type master;
         file "/var/cache/bind/example2.com.pl.hosts";
         };
 zone "example3.com.pl" {
         type master;
         file "/var/cache/bind/example3.com.pl.hosts";
         };
 zone "example4.com.pl" {
         type master;
         file "/var/cache/bind/example4.com.pl.hosts";
         };
I teraz chciałbym pozbyć się powiedzmy domeny example2.com.pl Próbuję zrobić to korzystając z grep:

Kod: Zaznacz cały

grep -v -A3 'zone "example.com.pl' /etc/bind/named.conf.local 
i później zapisać wyniki do pliku i operować na tym dalej. Niestety połączenie negacji zapytania -v z -A3 nie daje spodziewanego rezultatu. ;(
W jaki sposób mogę rozwiązać mój problem? Czyli jak z pliku named.conf.local usunąć ciąg znaków:

Kod: Zaznacz cały

 zone "example4.com.pl" {
         type master;
         file "/var/cache/bind/example4.com.pl.hosts";
         };
Próbowałem poradzić sobie z problemem za pomocą programu sed. Niestety ciągle otrzymywałem komunikat:

Kod: Zaznacz cały

sed: -e wyrażenie #1, znak 99: oczekiwano nowszej wersji programu sed
Więc uznałem że muszę poradzić sobie korzystając z grepa

Z góry dziękuję za pomoc ;)

: 28 sierpnia 2014, 15:42
autor: LordRuthwen

Kod: Zaznacz cały

sed -i 's/example2.com.pl//g' /sciezka/do/pliku
Usunie podaną frazę.

: 29 sierpnia 2014, 01:29
autor: bagsiur
Użyłem seda i skorzystałem z takiej składni:

Kod: Zaznacz cały

sed -i '/^zone "example3.com.pl"/','/};/d' /etc/bind/named.conf.local
Może komuś się przyda ;)