Portál AbcLinuxu, 8. května 2025 22:34
Ahoj,
mam soubor, kde jsou radky typu:
zone "arabianspecialevents.com" {
type master;
file "arabianspecialevents.com";
};
zone "arbesovka.cz" {
type master;
file "arbesovka.cz";
};
zone "arcadea.cz" {
type master;
file "arcadea.cz";
};
Potrebuji v bashi pridat zaznam
zone "arbesovka2.cz" {
type master;
file "arbesovka.cz";
};
(arbesovka2.cz), tak aby byla zachovana abeceda, tedy mezi zaznamy arbesovka.cz a arcadea.cz. Jak na to? Predem dekuju.
najjednoduhsie pomocou editora (napr. vim)
:( za tuhle odpoved nemuzu ani podekovat............
v bashi si spustite vim a pridate ten zaznam...
alebo je tych zaznamov velke mnozstvo a chcete to riesit automaticky?
OMFG, sekce programovani, tak nevim proc me tu otravujete s vimem?!
Mate pravdu. Vim je mocny nastroj a da se pouzit lehce i ve skriptu. Nenapadlo me to. "Opravdovy" programator nejsem, jen si skriptenim ulehcuji praci.
dobry den.
(cat soubor; echo 'zone "arbesovka2.cz" {
type master;
file "arbesovka.cz";
};') | tr -d "\t\n " | sed -e's/;zone/;\nzone/g' |sort | sed -e 's/zone"\([^"]\+\)"{typemaster;file"\([^"]\+\)";};/zone "\1" \{\n type master;\n file "\2";\n \};\n/ p' -ed
marek
Perfektni......moc dekuju. Dat to na radky, sesortit a pak vratit ;)
{ cat STARÝ_SOUBOR; echo NOVÝ_ZÁZNAM; } \ | python -c $'import re,sys\nprint \'\\n\'.join(sorted(re.findall(r\'(?ms)^zone .*?\\};\',sys.stdin.read())))'Resp. to napsal v pythonu celé...
To sice souhlasim, ale do souboru bude sahat akorat ten skript, takze format zustane nezmenen. A v pythonu to psat nebudu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.