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
