From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <14ec7b180706221051r398b72cdga7712c8afa3b18c2@mail.gmail.com> Date: Fri, 22 Jun 2007 11:51:25 -0600 From: "andrey mirtchovski" To: "jmk@plan9.bell-labs.com" , "Fans of the OS Plan 9 from Bell Labs" <9fans@cse.psu.edu> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_143343_26974723.1182534685764" References: <14ec7b180706201440j5628ed3em693c3f7222f86a14@mail.gmail.com> Cc: Subject: [9fans] Re: "grep" and "grep -v" Topicbox-Message-UUID: 84f6122e-ead2-11e9-9d60-3106f5b1d025 ------=_Part_143343_26974723.1182534685764 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 6/20/07, jmk@plan9.bell-labs.com wrote: > current problem is, given an ip address, say 135.104.9.7 > and an ip mask, say 255.255.255.0,how do i get the result > of addr & mask using only sed and echo? > sitting idly at usenix, not listening to the boring talks. it can be done, but it's not pretty. hope you don't mind the 36 seconds it takes to compute: parr% date; andip 123.124.125.126 255.255.0.127; date Fri Jun 22 13:43:48 EDT 2007 123.124.0.126 Fri Jun 22 13:44:24 EDT 2007 parr% now i think i'll go to the beach. ------=_Part_143343_26974723.1182534685764 Content-Type: text/plain; name=jmk.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f38yl3s4 Content-Disposition: attachment; filename="jmk.txt" IyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBoZWxwZXIgZnVuY3Rpb25zICMKIyMjIyMjIyMjIyMjIyMj IyMjIyMKZm4gbXNoaWZ0IHsKCXNoaWZ0CgllY2hvICQqCn0KCgpmbiByZXZlcnNlIHsKCXN3aXRj aCgkIyopIHsKCWNhc2UgMQoJCWVjaG8gJDEKCWNhc2UgKgoJCWVjaG8gYHtyZXZlcnNlIGB7bXNo aWZ0ICQqfX0gJDEKCX0KfQoKZm4gc3BsaXQgewoJbiA9ICQxCglzaGlmdAoJaWYofiAkbiAnJykg ewoJCWVjaG8gJCogfCBzZWQgJ3MvKC4pL1wxIC9nJwoJfQoJaWYgbm90ewoJCWVjaG8gJCogfCBz ZWQgJ3MvJ14kbl4nLyAvZycKCX0KfQoKZm4gam9pbiB7CgllY2hvICQqIHwgc2VkICdzLyAvL2cn Cn0KCmZuIGxlbmd0aCB7CgllY2hvICQjKgp9CgpmbiBwYWQgewp9CiMjIyMjIyMjIyMjIyMjIyMj IyMjCgpmbiBhbmQxIHsKCXN3aXRjaCgkIyopIHsKCWNhc2UgMgoJCWlmKH4gJDEgMSAmJiB+ICQy IDEpIHsKCQkJZWNobyAxCgkJfQoJCWlmIG5vdHsKCQkJZWNobyAwCgkJfQoJY2FzZSAxCgkJZWNo byBOYU4KCX0KfQoKZm4gYW5kIHsKCXsKCQlzd2l0Y2goJCMqKSB7CgkJY2FzZSAyCgkJCW4gPSAo YHtzcGxpdCAnJyAkMn0pCgkJCSogPSAoYHtzcGxpdCAnJyAkMX0pCgkJCXdoaWxlKCEgfiAkIyog MCkgewoJCQkJZWNobyAtbiBge2FuZDEgJDEgJG4oMSl9XicgJwoJCQkJc2hpZnQKCQkJCW4gPSBg e21zaGlmdCAkbn0KCQkJfQkKCQl9CgoJfXwgc2VkICdzLyAkLy87cy8gLy9nJwp9CgpmbiBvcjEg ewoJc3dpdGNoKCQjKikgewoJY2FzZSAyCgkJaWYofiAkMSAwICYmIH4gJDIgMCkgewoJCQllY2hv IDAKCQl9CgkJaWYgbm90ewoJCQllY2hvIDEKCQl9Cgl9Cn0KCmZuIG9yIHsKCXsKCQlzd2l0Y2go JCMqKSB7CgkJY2FzZSAyCgkJCW4gPSAoYHtzcGxpdCAnJyAkMn0pCgkJCSogPSAoYHtzcGxpdCAn JyAkMX0pCgkJCXdoaWxlKCEgfiAkIyogMCkgewoJCQkJZWNobyAtbiBge29yMSAkMSAkbigxKX1e JyAnCgkJCQlzaGlmdAoJCQkJbiA9IGB7bXNoaWZ0ICRufQoJCQl9CQoJCX0KCgl9fCBzZWQgJ3Mv ICQvLztzLyAvL2cnCn0KCmZuIGNtcDEgewoJbiA9ICcnCglzd2l0Y2goJDEpIHsKCWNhc2UgMAoJ CXN3aXRjaCgkMikgewoJCWNhc2UgMAoJCQluID0gMAoJCWNhc2UgMQoJCQluID0gMQoJCX0KCWNh c2UgMQoJCXN3aXRjaCgkMikgewoJCWNhc2UgMAoJCQluID0gLTEKCQljYXNlIDEKCQkJbiA9IDAK CQl9CgljYXNlICoKCQluID0gTmFOCgl9CQoJZWNobyAkbgkKfQoKZm4gY21wYiB7CglyZXMgPSAw Cglzd2l0Y2goJCMqKSB7CgljYXNlIDIKCQlvbmUgPSBge3NwbGl0ICcnICQxfQoJCXR3byA9IGB7 c3BsaXQgJycgJDJ9CgkJaWYofiAkI29uZSAkI3R3bykgewoJCQl3aGlsZSghIH4gJCNvbmUgMCAm JiB+ICRyZXMgMCkgewoJCQkJcmVzID0gYHtjbXAxICRvbmUoMSkgJHR3bygxKX0KCQkJCW9uZSA9 IGB7bXNoaWZ0ICRvbmV9CgkJCQl0d28gPSBge21zaGlmdCAkdHdvfQoJCQl9CgkJCWVjaG8gJHJl cwoJCX0KCQlpZiBub3QgewoJCQl3aGlsZSghIH4gJCNvbmUgMCAmJiAhIH4gJCN0d28gMCkgewoJ CQkJb25lID0gYHttc2hpZnQgJG9uZX0KCQkJCXR3byA9IGB7bXNoaWZ0ICR0d299CgkJCX0KCQkJ aWYoISB+ICQjb25lIDApIHsKCQkJCWVjaG8gLTEKCQkJfQoJCQlpZiBub3QgewoJCQkJZWNobyAx CgkJCX0KCQl9Cgl9Cn0KCmZuIGNtcCB7Cglzd2l0Y2goJCMqKSB7CgljYXNlIDIKCQljbXBiIGB7 dG9iaW4gJDF9IGB7dG9iaW4gJDJ9Cgl9Cn0KCmZuIG1vZHR3bzEgewoJc3dpdGNoICgkMSkgewoJ Y2FzZSAyIDQgNiA4IDAKCQluID0gMAoJY2FzZSAxIDMgNSA3IDkKCQluID0gMQoJY2FzZSAqCgkJ biA9IE5hTgoJfQoJZWNobyAkbgp9CmZuIG1vZHR3by1sb25nIHsKCW4gPSAkKgoJbW9kdHdvMSAk bigkI24pCn0KCmZuIG1vZHR3byB7Cgltb2R0d28tbG9uZyBge3NwbGl0ICcnICQxfQp9CgpmbiBk aXZ0d28xIHsKCXN3aXRjaCAoJDEpIHsKCWNhc2UgMAoJCW4gPSAwCgljYXNlIDEKCQluID0gKDAg MSkKCWNhc2UgMgoJCW4gPSAxCgljYXNlIDMKCQluID0gKDEgMSkKCWNhc2UgNAoJCW4gPSAyCglj YXNlIDUKCQluID0gKDIgMSkKCWNhc2UgNgoJCW4gPSAzCgljYXNlIDcKCQluID0gKDMgMSkKCWNh c2UgOAoJCW4gPSA0CgljYXNlIDkKCQluID0gKDQgMSkKCWNhc2UgMTAKCQluID0gNQoJY2FzZSAx MQoJCW4gPSAoNSAxKQoJY2FzZSAxMgoJCW4gPSA2CgljYXNlIDEzCgkJbiA9ICg2IDEpCgljYXNl IDE0CgkJbiA9IDcKCWNhc2UgMTUKCQluID0gKDcgMSkKCWNhc2UgMTYKCQluID0gOAoJY2FzZSAx NwoJCW4gPSAoOCAxKQoJY2FzZSAxOAoJCW4gPSA5CgljYXNlIDE5CgkJbiA9ICg5IDEpCgl9Cgll Y2hvICRuCn0KCmZuIGRpdnR3by1sb25nIHsKCXN3aXRjaCgkIyopIHsKCWNhc2UgMQoJCW4gPSAo YHtkaXZ0d28xICQxfSkKCQllY2hvICRuKDEpCgljYXNlICoKCQluID0gKGB7ZGl2dHdvMSAkMX0p CgkJc3dpdGNoKCQjbikgewoJCWNhc2UgMQoJCQllY2hvICRuKDEpICBge2RpdnR3by1sb25nIGB7 bXNoaWZ0ICQqfX0KCQljYXNlIDIKCQkJeiA9IChge21zaGlmdCAkKn0pCgkJCWVjaG8gJG4oMSkg IGB7ZGl2dHdvLWxvbmcgJG4oMileJHooMSkgYHttc2hpZnQgJHp9fQoJCX0KCX0KfQoKZm4gZGl2 dHdvIHsKCWRpdnR3by1sb25nIGB7c3BsaXQgJycgJDF9IHxzZWQgJ3MvIC8vZztzL14wKyguKykv XDEvJwp9CgpmbiBhZGRvbmUxIHsKCXN3aXRjaCAoJDEpIHsKCWNhc2UgMAoJCW4gPSAxCgljYXNl IDEKCQluID0gMgoJY2FzZSAyCgkJbiA9IDMKCWNhc2UgMwoJCW4gPSA0CgljYXNlIDQKCQluID0g NQoJY2FzZSA1CgkJbiA9IDYKCWNhc2UgNgoJCW4gPSA3CgljYXNlIDcKCQluID0gOAoJY2FzZSA4 CgkJbiA9IDkKCWNhc2UgOQoJCW4gPSAoMCAxKQoJY2FzZSAqCgkJbiA9IE5hTgoJfQoJZWNobyAk bgp9CgpmbiBhZGRvbmUtbG9uZyB7CgkjIGJpZy1lbmRpYW4KCXogPSBge3NwbGl0ICcnICQxfQoJ c3dpdGNoKCQjKikgewoJY2FzZSAxCgkJbiA9IChge2FkZG9uZTEgJHp9KQoJCXN3aXRjaCgkI24p IHsKCQljYXNlIDEKCQkJZWNobyAkbiBge21zaGlmdCAkKn0KCQljYXNlIDIKCQkJZWNobyAkbigx KSAkbigyKQoJCX0KCWNhc2UgKgoJCW4gPSBge2FkZG9uZTEgJHp9CgkJc3dpdGNoKCQjbikgewoJ CWNhc2UgMQoJCQllY2hvIC1uICRuKDEpIGB7bXNoaWZ0ICQqfQoJCWNhc2UgMgoJCQlueiA9IGB7 bXNoaWZ0ICQqfQoJCQllY2hvIC1uICRuKDEpICBge2FkZG9uZS1sb25nICRueigxKV4kbigyKSBg e21zaGlmdCAkbnp9fQoJCX0KCX0KfQoKZm4gYWRkb25lIHsKCWpvaW4gYHtyZXZlcnNlIGB7YWRk b25lLWxvbmcgYHtyZXZlcnNlIGB7c3BsaXQgJycgJDF9fX19Cn0KCmZuIG11bHR3bzEgewoJc3dp dGNoICgkMSkgewoJY2FzZSAwCgkJbiA9IDAKCWNhc2UgMQoJCW4gPSAyCgljYXNlIDIKCQluID0g NAoJY2FzZSAzCgkJbiA9IDYKCWNhc2UgNAoJCW4gPSA4CgljYXNlIDUKCQluID0gKDAgMSkKCWNh c2UgNgoJCW4gPSAoMiAxKQoJY2FzZSA3CgkJbiA9ICg0IDEpCgljYXNlIDgKCQluID0gKDYgMSkK CWNhc2UgOQoJCW4gPSAoOCAxKQoJfQoKCWlmKH4gJCMqIDIpIHsKCQlzd2l0Y2goJCNuKSB7CgkJ Y2FzZSAyCgkJCW4gPSAoYHthZGRvbmUxICRuKDEpfSAkbigyKSkKCQljYXNlIDEKCQkJbiA9IGB7 YWRkb25lICRufQoJCX0KCX0KCWVjaG8gJG4KfQoKZm4gbXVsdHdvLWxvbmcgewoJIyBiaWctZW5k aWFuCgl6ID0gYHtzcGxpdCAnJyAkMX0KCXN3aXRjaCgkIyopIHsKCWNhc2UgMQoJCW4gPSBge211 bHR3bzEgJHp9CgkJc3dpdGNoKCQjbikgewoJCWNhc2UgMQoJCQllY2hvICRuCgkJY2FzZSAyCgkJ CWVjaG8gJG4oMSkgJG4oMikKCQl9CgljYXNlICoKCQluID0gYHttdWx0d28xICR6fQoJCW5uID0g YHttc2hpZnQgJCp9CgkJc3dpdGNoKCQjbikgewoJCWNhc2UgMQoJCQllY2hvICRuIGB7bXVsdHdv LWxvbmcgJG5ufQoJCWNhc2UgMgoJCQllY2hvICRuKDEpICBge211bHR3by1sb25nICRubigxKV4k bigyKSBge21zaGlmdCAkbm59fQoJCX0KCX0KfQoKZm4gbXVsdHdvIHsKCWpvaW4gYHtyZXZlcnNl IGB7bXVsdHdvLWxvbmcgYHtyZXZlcnNlIGB7c3BsaXQgJycgJDF9fX19Cn0KCmZuIHRvYmluLWxv bmcgewoJbiA9IGB7ZGl2dHdvICQxfQoJaWYoISB+ICRuIDApIHsKCQllY2hvIC1uIGB7dG9iaW4t bG9uZyBge2RpdnR3byAkMX19IGB7bW9kdHdvICQxfQoJfSAKCWlmIG5vdCB7CgkJbW9kdHdvICQx Cgl9Cn0KCmZuIHRvYmluIHsKCWpvaW4gYHt0b2Jpbi1sb25nICQxfQp9CgpmbiBwYWRiIHsKCSMg cGFkIHRoZSBmaXJzdCBiaW5hcnkgbnVtYmVyIHdpdGggemVyb3MgdW50aWwgCgkjIGl0IGJlY29t ZXMgYXMgbG9uZyBhcyB0aGUgc2Vjb25kCgkjIAoJIyB1c2VyIG11c3QgZW5zdXJlIHRoYXQgdGhl IGZpcnN0IGFyZ3VtZW50IGlzIAoJIyBudW1lcmljYWxseSBsZXNzIHRoYW4gdGhlIHNlY29uZAoK CW9uZSA9IGB7c3BsaXQgJycgJDF9Cgl0d28gPSBge3NwbGl0ICcnICQyfQoKCXdoaWxlKCEgfiAk I29uZSAkI3R3bykgewoJCW9uZSA9ICgnMCcgJG9uZSkKCX0KCWVjaG8gYHtqb2luICRvbmV9Cn0K CmZuIHRvZGVjLWxvbmcgewoJIyByZWFyLWVuZGlhbgoJc3dpdGNoICgkIyopIHsKCWNhc2UgMQoJ CXN3aXRjaCgkMSkgewoJCWNhc2UgMQoJCQllY2hvIC1uIDEKCQljYXNlICoKCQkJZWNobyAtbiBO YU4JIyBjYW4gbm90IGVuZCB3aXRoIGEgemVybwoJCX0KCWNhc2UgKgoJCXN3aXRjaCAoJDEpIHsK CQljYXNlIDAKCQkJbXVsdHdvIGB7dG9kZWMtbG9uZyBge21zaGlmdCAkKn0gfQoJCWNhc2UgMQoJ CQlhZGRvbmUgYHttdWx0d28gYHt0b2RlYy1sb25nIGB7bXNoaWZ0ICQqfSB9IH0KCQl9Cgl9Cn0K CmZuIHRvZGVjIHsKCXN3aXRjaCgkMSkgewoJY2FzZSAwCgkJZWNobyAwCgljYXNlICoKCQlqb2lu IGB7cmV2ZXJzZSBge3RvZGVjLWxvbmcgYHtyZXZlcnNlIGB7c3BsaXQgJycgJDF9fX19Cgl9Cn0K CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZm4g YW5kaXAxIHsKCXN3aXRjaCgkIyopIHsKCWNhc2UgMgoJCW5zID0gYHt0b2JpbiAkMX0KCQlubiA9 IGB7dG9iaW4gJDJ9CgkJc3dpdGNoKGB7Y21wYiAkbm4gJG5zfSkgewoJCWNhc2UgLTEKCQkJbnMg PSBge3BhZGIgJG5zICRubn0KCQljYXNlIDEKCQkJbm4gPSBge3BhZGIgJG5uICRuc30KCQl9CgkJ ciA9IGB7YW5kICRucyAkbm59CgkJdG9kZWMgYHtlY2hvICRyIHxzZWQgJ3MvXjArKC4rKSQvXDEv J30KCWNhc2UgKgoJCWVjaG8gTmFOCgl9CQp9CmZuIGFuZGlwIHsKCXsKCQluID0gKGB7c3BsaXQg J1wuJyAkMiB9KQoJCSogPSAoYHtzcGxpdCAnXC4nICQxIH0pCgkJaWYofiAkI24gJCMqKSB7CgkJ CXdoaWxlKCEgfiAkIyogMCkgewoJCQkJZWNobyAtbiBge2FuZGlwMSAkbigxKSAkMX1eJyAnCgkJ CQlzaGlmdAoJCQkJbiA9IGB7bXNoaWZ0ICRufQoJCQl9CgkJfQoJCWlmIG5vdCB7CgkJCWVjaG8g J251bWJlciBvZiBxdWFkcyBtdXN0IG1hdGNoJwoJCX0KCX18IHNlZCAncy8gJC8vO3MvIC8uL2cn Cn0K ------=_Part_143343_26974723.1182534685764--