On Sun, Jul 04, 2004 at 08:12:49PM +0300, Dimitar Terziev wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Ситуацията е следната: > Samba сървър, за около 40 клиенти, като не е желателно в него да се "ровят" > външни хора (мрежата е с няколко хиляди потребители). > > Поради някои изисквания - не може да има пароли на папките. > Направил съм firewall с iptables, като съм описал кои ip адреси имат достъп до > сървъра. > Отделоно, има един файл - /etc/macs, в който са описани MAC адресите > (във вида IP MAC ). (в случая не е удобно да записвам маковете в правилата на > iptables). [snip] > Значи, от mysqldump получавам следните записи: > '212.116.157.11','00:02:02:02:02:02' > '1.1.1.1','11:11:11:11:11:11' > '2.3.4.5','31:16:10:31:41:12' > > въпроса ми е - как да кажа на sed или awk да вземе всичко, без ' и , > и да се получи това: > > 212.116.157.11 00:02:02:02:02:02
Виждам, че доста хора вече са отговорили - което може да се очаква, при положение, че три-четири дни не пипах изобщо компютър, да не говорим за Интернет :) Но все пак, в духа на TMTOWTDI, нужно ли е наистина да parse-ваш изхода от mysqldump, ако можеш да убедиш command-line клиента да ти свърши работата? :) Ако таблицата ти изглежда по начин, подобен на този... | macs | CREATE TABLE `macs` ( `ads` char(20) NOT NULL default '', `mac` char(20) NOT NULL default '' ) TYPE=MyISAM | ...то можеш да направиш нещо като това :) [EMAIL PROTECTED] ~]> mysql -BNe 'select concat(ads, " ", mac) from macs' test 212.116.157.11 00:02:02:02:02:02 1.1.1.1 11:11:11:11:11:11 2.3.4.5 31:16:10:31:41:12 [EMAIL PROTECTED] ~]> Дори опцията -B не ти е непременно нужна, ако пренасочиш изхода на mysql клиента към файл или pipe: [EMAIL PROTECTED] ~]> mysql -Ne 'select concat(ads, " ", mac) from macs' test > foo [EMAIL PROTECTED] ~]> cat foo 212.116.157.11 00:02:02:02:02:02 1.1.1.1 11:11:11:11:11:11 2.3.4.5 31:16:10:31:41:12 [EMAIL PROTECTED] ~]> ...и няма нужда нито от sed, нито от awk :) А ако все пак настояваш... [EMAIL PROTECTED] ~]> cat foo '212.116.157.11','00:02:02:02:02:02' '1.1.1.1','11:11:11:11:11:11' '2.3.4.5','31:16:10:31:41:12' Това е изходният файл във формат, подобен май на това твоето. Убеждаваме awk да приема и апостроф, и апостроф-запетая-апостроф за field separators: [EMAIL PROTECTED] ~]> awk -F"'(,')?" '{print $2 " " $3}' foo 212.116.157.11 00:02:02:02:02:02 1.1.1.1 11:11:11:11:11:11 2.3.4.5 31:16:10:31:41:12 [EMAIL PROTECTED] ~]> Voila! :) Но според мен решението с mysql -N и concat е малко по-добро... Поздрави, Петър -- Peter Pentchev [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 This sentence contains exactly threee erors.
pgpn93ZKrIKeh.pgp
Description: PGP signature