man一下就清楚了。 如果只是给的数据,可以试下这个: sed 's/\(.*\)/\1 \1/' l1 >tmp && join -a 1 tmp l2 |sed 's/\(g[0-9]\) g[0-9]$/\1 NA NA NA NA/' l1, l2是两个文件,不过觉得这个不一定比Perl快,Perl is written by Larry Wall :)
2010/5/9 camelbbs <[email protected]>: > join怎么用呢,谢谢啊 > > On May 8, 12:08 pm, Jie Zhou <[email protected]> wrote: >> 用 join 快多了。 >> >> 为什么一定要用perl? >> >> best, >> Jie Zhou >> Department of Human Genetics, >> Institute of Genomics and Systems Biology, >> University of Chicago >> 920 East 58th Street, CLSC 431 >> Chicago, IL 60637 >> >> 2010/5/7 camelbbs <[email protected]> >> >> >> >> >> >> > $a{g1} = [na,na,na] >> > 是引用吗,谢谢 >> >> > On May 7, 7:00 pm, wd <[email protected]> wrote: >> > > 用 hash,key 就是那些个 g1,g2 的,先根据第一个表生成一个 类似 $a{g1} = [na,na,na] >> > > 的,然后再把第二个表里面有的补进来。 >> >> > > 在 2010年5月8日 上午7:05,camelbbs <[email protected]>写道: >> >> > > > 这个程序跟生物没关系,我只是引用了一些名词而已。就是有两个表,把一个表的内容放到另一个表中去,按名称来放,没有的就空着,怎么放比较好? >> >> > > > On May 7, 5:21 pm, Jeova Sanctus Unus <[email protected]> >> > > > wrote: >> > > > > 不懂生物。我想可以先放到数组里,再先补NA,排序就好了吧?什么叫按列表排列?是按每一列吗? >> >> > > > > 在 10-5-7,camelbbs<[email protected]> 写道: >> >> > > > > > 有一列基因列表: >> > > > > > g1 >> > > > > > g2 >> > > > > > g3 >> > > > > > g4 >> > > > > > g5 >> > > > > > g6 >> >> > > > > > 另外有一组基因数据: >> > > > > > g1 a b c >> > > > > > g3 a d f >> > > > > > g4 d f e >> > > > > > g6 w q h >> >> > > > > > 我想把这组基因数据按列表排列,没有的行用NA代替。结果成这样: >> >> > > > > > g1 g1 a b c >> > > > > > g2 NA NA NA NA >> > > > > > g3 g3 a d f >> > > > > > g4 g4 d f e >> > > > > > g5 NA NA NA NA >> > > > > > g6 g6 w q h >> >> > > > > > 请问perl有什么比较快的办法可以实现。 >> >> > 我先把列表放到一个hash,然后foreach这个hash,这样虽然可以实现,但是效率很低,如果我有几百万行的话,时间很长。请问这样的问题有更 >> > > > > > 简单点的办法吗? >> >> > > > > > -- >> > > > > > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 >> > > > > > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> > > > > > 要取消订阅此网上论坛,请发送电子邮件至 >> > > > > > [email protected]<perlchina%[email protected]> >> > <perlchina%[email protected]> >> > > > 。 >> > > > > > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN >> > 访问此网上论坛。 >> >> > > > > -- >> > > > > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 >> > > > > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> > > > > 要取消订阅此网上论坛,请发送电子邮件至 >> > > > > [email protected]<perlchina%[email protected]> >> > <perlchina%[email protected]> >> > > > 。 >> > > > > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。- >> > > > Hide quoted text - >> >> > > > > - Show quoted text - >> >> > > > -- >> > > > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 >> > > > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> > > > 要取消订阅此网上论坛,请发送电子邮件至 >> > > > [email protected]<perlchina%[email protected]> >> > <perlchina%[email protected]> >> > > > 。 >> > > > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。 >> >> > > -- >> > > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 >> > > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> > > 要取消订阅此网上论坛,请发送电子邮件至 >> > > [email protected]<perlchina%[email protected]> >> > 。 >> > > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。- >> > Hide quoted text - >> >> > > - Show quoted text - >> >> > -- >> > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 >> > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> > 要取消订阅此网上论坛,请发送电子邮件至 >> > [email protected]<perlchina%[email protected]> >> > 。 >> > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。 >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 >> 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。- Hide >> quoted text - >> >> - Show quoted text - > > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > > -- 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
