Üdv mindenkinek!
A napokban a DNS kezelésének megkönnyítése végett elkezdtem írni egy shell scriptet, amúgy sem vagyok nagy otthon ebben, de eddig viszonylag zökkenő mentesen ment, viszont a törlés rész nem akar sikerül. Már minden hol kerestem megoldást, és annyira jutok hogy megtudom keresni a törlendő rész regexp-el (regexp sem az erősségem)
gawk '/(zone "highszerver.net")/,/};$/' /etc/bind/zones.conf
Ezzel tökéletesen kiválasztom az adott zónához tartozó szöveg részletet, viszont sehogy nem tudom törölni, ebben szeretném a segítségeteket kérni.
- 1428 megtekintés
Hozzászólások
A fájlt se ismerem, és az awk-ot se, de ha regexppel megtalálod azt, ait törölni akarsz egy fájlból, akkor sed-del szedd ki:
sed -e 's/regexp//g'
Ha a regexp által megtalált szövegnek csak egy részét kell kiszedni:
sed -e 's/\(elotte\)torlendo\(utana\)/\1\2/g'
- A hozzászóláshoz be kell jelentkezni
Ha jól értelmezem, akkor így kéne kinézni: sed -e 's/\(zone "highszerver.net"\)\(};$\)/\1\2/g'
De így sajnos nem szedi ki a fájlból, úgyanúgy benne van (természetesen utána írtam a fájl elérési útját, és a képernyőre írt kimenetben benne volt).
Szóval az én fájlom a Bind9 DNS szerver zónákat tartalmazó fájlja
Ez a fájl az alább szerint néz ki.
zone "zona1.hu" IN {
type master;
file "/etc/bind/zones/zona1.hu.db";
};
zone "zona2.hu" IN {
type master;
file "/etc/bind/zones/zona2.hu.db";
};
Na most én az első sorban lévő idéző jelek közti szöveggel szeretnék rákeresni és törölni a szövegből.
Remélem így értehető lesz:) És köszi a gyors reakciót!
- A hozzászóláshoz be kell jelentkezni
Egyrészt, amit írtam, ott az "elotte", "utana" részt meghagyja, úgyhogy amit törölni akarsz, azt nem kell zárójelbe tenni. Ebben az esetben mindent, amit a regexp megtalál, törölni kell, úgyhogy egyáltalán nem kell a zárójeles módszer. Továbbá az egész szövegnek illeszkednie kell a regexpre, úgyhogy itt középre kell .* vagy inkább [^}]* (hogy az első }-ig töröljön).
Másrészt itt többsoros részeket kell keresni és törölni, a sed pedig soronként működik. Erre egy ronda workaroundot szoktam használni: tr-rel lecserélem az újsorokat valami olyan karakterre, ami nincs a fájlban, sed-del cserélek, aztán visszacserélem az újsorokat. Pl.:
tr "\n" $ | sed -e 's/zone "highszerver.net"[^}]*};//g' | tr $ "\n"
Valaki biztosan tud normálisabb megoldást: sed-del is lehet bűvészkedni, de valószínűleg awk-ban vagy perl-ben egyszerűen meg lehet csinálni.
- A hozzászóláshoz be kell jelentkezni
En mondjuk rubyban oldottam ezt meg mert a script mast is csinal, de:
require "erb"
class Ntemplate
def initialize(name)
@name = name
end
def get_binding
binding
end
end
file = File.new("/etc/namedb/named.conf.local", "r")
namedconf = file.read
file.close
nconf = %{
zone "<%= @name %>" \{
type master;
file "master/zone_<%= @name %>";
\};
}.gsub(/^ /, '')
nc = Ntemplate.new(domname)
alma = rhtml.result(nc.get_binding)
File.open("/etc/namedb/named.conf.local", 'w+') {|f| f.write(namedconf.to_s.gsub("#{alma}", '')) }
----
Szoval a lenyeg az hogy az egeszet *EGY* stringkent kell kezelni.
- A hozzászóláshoz be kell jelentkezni
Köszi szépen mind kettőtöknek, a sed-el megoldottam (csak még elé írtam cat-el a szöveget) és működik :)
Ruby-t egyáltalán nem ismerem, csak tudom hogy van, így azzal nem akartam kísérletezni.
Tehát köszönöm!
- A hozzászóláshoz be kell jelentkezni
sed '/zone "highszerver.net"/,/};/d'
--
Soli Deo Gloria
- A hozzászóláshoz be kell jelentkezni
Ez még jobb:) köszönöm!
Olyanba tudtok segíteni nekem hogy fájl zárolás?
Hogy véletlenül se írja felül az új fájl ha ne adj isten egyszerre futna le a parancs.
Találtam flock-ot, de nem tudom használni, ugyanúgy tudok menteni fájlt. (biztos hogy nem jól csinálom, de hát kezdő linuxos létemre talán ez elnézhető.)
A válasz(oka)t előre is köszönöm! És az előző válaszokat is köszönöm! Így nem szenvedtem már több napot.
- A hozzászóláshoz be kell jelentkezni
Olyanba tudtok segíteni nekem hogy fájl zárolás?
dotlockfile
- A hozzászóláshoz be kell jelentkezni
ebben tud valaki segíteni?
- A hozzászóláshoz be kell jelentkezni
remélem nem gond, hogy hozzáírtam a címhez, hogy megoldva:) hátha más is erre keres megoldást.
- A hozzászóláshoz be kell jelentkezni
Dehogy gond, sot ez a helyes eljaras. Masik meg a "sokatmondo" cim a topicnak, igy is egyszeruen ra lehet keresni. Imadom a "script help kellene" topicokat, ahol a vegen egy szo nelkul eltunik a kerdezo...
- A hozzászóláshoz be kell jelentkezni
akkor örülök neki:) jó kis közösség ez, gyorsan kaptam segítséget:) erre nem számítottam.
- A hozzászóláshoz be kell jelentkezni