忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1369 | 回复: 8

[文本处理] 如何根据b文件来筛选掉不想要的domain [复制链接]

论坛徽章:
0
发表于 2018-01-31 19:10 |显示全部楼层
a.txt
super1_35231_42804      7574    gag_pre-integrs/RVT_2/Retrotran_gag_2/rve
super1_48918_54312      5395    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_71681_76173      4493    Retrotran_gag_2
super1_192233_199678    7446    Retrotrans_gag/Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1/rve/Chromo
super1_216492_223313    6822    Retrotrans_gag
super1_230561_235028    4468    Retrotran_gag_2/zf-CCHC/zf-CCHC_4
super1_291428_302513    11086   Retrotrans_gag/RVP_2/RVT_1/rve
super1_310462_317345    6884    RVT_1/rve
super1_342453_344744    2292    PTR2
super1_371861_386288    14428   RVT_3
super1_399520_406675    7156    RVP_2/RVT_1/Chromo
super1_436013_445837    9825    Retrotran_gag_2/rve
super1_470886_473993    3108    Retrotran_gag_2/zf-CCHC
super1_507714_519214    11501   Retrotrans_gag/DUF659
super1_525959_531995    6037    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_533502_547347    13846   zf-CCHC
super1_572981_579149    6169    Retrotrans_gag/gag-asp_proteas/Asp_protease_2/RVP_2/rve/Chromo
super1_596192_602055    5864    RVT_2
super1_617483_626724    9242    Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1/rve/Chromo
super1_646356_649745    3390    Retrotran_gag_2/zf-CCHC
super1_657074_663210    6137    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_663995_670109    6115    RVT_1/Chromo
super1_671390_674778    3389    Retrotran_gag_2/zf-CCHC
super1_725051_729096    4046    Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1
super1_736512_740032    3521    Retrotran_gag_2/zf-CCHC
super1_758530_764549    6020    RRM_1/RVT_2
super1_781549_796535    14987   Retrotran_gag_2
super1_803016_813795    10780   Retrotran_gag_2/RVT_2/RVT_1/Chromo
super1_818390_823335    4946    gag_pre-integrs/rve/RVT_2
super1_824710_830397    5688    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_894475_898077    3603    Retrotran_gag_2/zf-CCHC
super1_923458_926812    3355    Retrotran_gag_2/zf-CCHC_2/zf-CCHC
super1_929277_936403    7127    Retrotran_gag_2/zf-CCHC/rve/RVT_2
super1_938960_942417    3458    IMS
super1_957656_963701    6046    DUF4219/zf-CCHC/gag_pre-integrs/rve/RVT_2
super1_967461_973479    6019    Retrotran_gag_2/zf-CCHC/gag_pre-integrs/rve/RVT_2

b.txt
Chromo
Retrotran_gag_2
Retrotran_gag_3
DUF390
DUF4219
DUF4283
GP41
zf-CCHC
zf-CCHC_2
zf-CCHC_3
zf-CCHC_4
zf-CCHC_5
zf-CCHC_6
Transposase_28
gag_pre-integrs
rve
rve_3
Asp
Asp_protease
Asp_protease_2
gag-asp_proteas
RVP
RVP_2
Peptidase_A17
Peptidase_A2E
Retrotrans_gag
RNase_H
RVT_1
RVT_2
RVT_3
RVT_thumb
zf-RVT
TYA
如上,a 文件包含3列:序列,长度,由/分开的domain         b文件是我想要的domain
问题:我如何根据b文件来筛选掉不想要的domain

论坛徽章:
29
酉鸡
日期:2014-05-04 10:03:482015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2018-01-31 21:40 |显示全部楼层
本帖最后由 zxy877298415 于 2018-01-31 21:43 编辑

回复 1# 小小脑

  1. awk  'FNR==NR{a[$0]=1;next}{for(i=1;i<=split($3,b,"/");i++) if(!a[b[i]]) sub(b[i],"",$0)}1' b.txt a.txt
复制代码

论坛徽章:
0
发表于 2018-02-01 10:25 |显示全部楼层
回复 2# zxy877298415

谢谢大神指点!但是筛选过后出现如下情况,我想的到跟原先的排列方式,序列,长度,由/分割的domain。
我试图 sed -e 's/\// /g' guolv.csv|awk 'NF>=3'|sed -e's/ /\//g'|less -S。但空行消失,但/domian或者domain//这样的还存在。
还是求大神指点!

super16_68142_72128   5395   /
super1330_37375_41767 4493
super1330_236672_240409 7446 Retrotran_gag_2//zf-CCHC
super1330_254558_258100 6822 Retrotran_gag_2/zf-CCHC
super1331_53460_65918 4468  rve/RVT_2/RVP_2/RVT_1
super1331_93567_102777  2292 RVT_3/RVT_1/rve
super1331_144441_149166 11501 Retrotrans_gag
super1331_227935_239655  9242 Asp_protease_2/RVT_3/RVT_1/rve
super1336_982370_994798 6137 //rve

论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2018-02-01 13:03 |显示全部楼层
回复 1# 小小脑

which one do you like

$ awk 'FNR==NR{b[$1];next}{d=$3;gsub("/.*","",d);if(d in b)print}' b.txt a.txt
super1_35231_42804      7574    gag_pre-integrs/RVT_2/Retrotran_gag_2/rve
super1_48918_54312      5395    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_71681_76173      4493    Retrotran_gag_2
super1_192233_199678    7446    Retrotrans_gag/Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1/rve/Chromo
super1_216492_223313    6822    Retrotrans_gag
super1_230561_235028    4468    Retrotran_gag_2/zf-CCHC/zf-CCHC_4
super1_291428_302513    11086   Retrotrans_gag/RVP_2/RVT_1/rve
super1_310462_317345    6884    RVT_1/rve
super1_371861_386288    14428   RVT_3
super1_399520_406675    7156    RVP_2/RVT_1/Chromo
super1_436013_445837    9825    Retrotran_gag_2/rve
super1_470886_473993    3108    Retrotran_gag_2/zf-CCHC
super1_507714_519214    11501   Retrotrans_gag/DUF659
super1_525959_531995    6037    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_533502_547347    13846   zf-CCHC
super1_572981_579149    6169    Retrotrans_gag/gag-asp_proteas/Asp_protease_2/RVP_2/rve/Chromo
super1_596192_602055    5864    RVT_2
super1_617483_626724    9242    Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1/rve/Chromo
super1_646356_649745    3390    Retrotran_gag_2/zf-CCHC
super1_657074_663210    6137    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_663995_670109    6115    RVT_1/Chromo
super1_671390_674778    3389    Retrotran_gag_2/zf-CCHC
super1_725051_729096    4046    Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1
super1_736512_740032    3521    Retrotran_gag_2/zf-CCHC
super1_781549_796535    14987   Retrotran_gag_2
super1_803016_813795    10780   Retrotran_gag_2/RVT_2/RVT_1/Chromo
super1_818390_823335    4946    gag_pre-integrs/rve/RVT_2
super1_824710_830397    5688    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_894475_898077    3603    Retrotran_gag_2/zf-CCHC
super1_923458_926812    3355    Retrotran_gag_2/zf-CCHC_2/zf-CCHC
super1_929277_936403    7127    Retrotran_gag_2/zf-CCHC/rve/RVT_2
super1_957656_963701    6046    DUF4219/zf-CCHC/gag_pre-integrs/rve/RVT_2
super1_967461_973479    6019    Retrotran_gag_2/zf-CCHC/gag_pre-integrs/rve/RVT_2

$ awk 'FNR==NR{b[$1];next}{t=split($3,d,"/");for(n=1;n<=t;n+=1)if(!(d[n] in b))next}1' b.txt a.txt
super1_35231_42804      7574    gag_pre-integrs/RVT_2/Retrotran_gag_2/rve
super1_48918_54312      5395    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_71681_76173      4493    Retrotran_gag_2
super1_192233_199678    7446    Retrotrans_gag/Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1/rve/Chromo
super1_216492_223313    6822    Retrotrans_gag
super1_230561_235028    4468    Retrotran_gag_2/zf-CCHC/zf-CCHC_4
super1_291428_302513    11086   Retrotrans_gag/RVP_2/RVT_1/rve
super1_310462_317345    6884    RVT_1/rve
super1_371861_386288    14428   RVT_3
super1_399520_406675    7156    RVP_2/RVT_1/Chromo
super1_436013_445837    9825    Retrotran_gag_2/rve
super1_470886_473993    3108    Retrotran_gag_2/zf-CCHC
super1_525959_531995    6037    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_533502_547347    13846   zf-CCHC
super1_572981_579149    6169    Retrotrans_gag/gag-asp_proteas/Asp_protease_2/RVP_2/rve/Chromo
super1_596192_602055    5864    RVT_2
super1_617483_626724    9242    Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1/rve/Chromo
super1_646356_649745    3390    Retrotran_gag_2/zf-CCHC
super1_657074_663210    6137    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_663995_670109    6115    RVT_1/Chromo
super1_671390_674778    3389    Retrotran_gag_2/zf-CCHC
super1_725051_729096    4046    Asp_protease_2/gag-asp_proteas/RVP_2/RVT_1
super1_736512_740032    3521    Retrotran_gag_2/zf-CCHC
super1_781549_796535    14987   Retrotran_gag_2
super1_803016_813795    10780   Retrotran_gag_2/RVT_2/RVT_1/Chromo
super1_818390_823335    4946    gag_pre-integrs/rve/RVT_2
super1_824710_830397    5688    Retrotran_gag_2/gag_pre-integrs/rve/RVT_2
super1_894475_898077    3603    Retrotran_gag_2/zf-CCHC
super1_923458_926812    3355    Retrotran_gag_2/zf-CCHC_2/zf-CCHC
super1_929277_936403    7127    Retrotran_gag_2/zf-CCHC/rve/RVT_2
super1_957656_963701    6046    DUF4219/zf-CCHC/gag_pre-integrs/rve/RVT_2
super1_967461_973479    6019    Retrotran_gag_2/zf-CCHC/gag_pre-integrs/rve/RVT_2

论坛徽章:
0
发表于 2018-02-01 21:43 |显示全部楼层
回复 4# jason680
厉害了大神!不好意思我想再问下如果以下两个文件,a 文件是序列,domain。  b文件是domain顺序,类别。我想根据b文件只要出现这些顺序的把a文件分下类。这样又如何操作呢?
a.txt
super1      Copia_gag/PR/RT/RT/RH/INT
super2      gag/PR/PR/PR/RT/INT/chromo
super3      Copia_gag/DUF/RT/RT/RH/INT/INT/INT/RT
super4      gag/PR/PR/RT/INT/RH/RT
super5      gag/PR/PR/RH/RT/RT/INT
super6      gag/PR/PR/RH/RT/IN

b.txt
gag/PR/RT/RH/INT   Gypsy
gag/PR/INT/RT/RH    Copia
Copia_gag/PR/INT/RT/RH   Copia
gag/PR/RT/INT/RH    Bel-pao

论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2018-02-02 14:01 |显示全部楼层
回复 6# 小小脑

It's hard to know what you want

1. input data
2. procedure rule
3. output data


$ awk -F'[ \t/]+' 'FNR==NR{v=$NF;NF-=1;a[" "$0]=v;next}{S=$0;$1="";for(n=2;n<NF;n+=1){if($n==$(n+1))gsub($n" "$n,$n)};while(NF){if($0 in a){print S"\t"a[$0];next}NF-=1}print S}' b.txt a.txt
super1      Copia_gag/PR/RT/RT/RH/INT
super2      gag/PR/PR/PR/RT/INT/chromo
super3      Copia_gag/DUF/RT/RT/RH/INT/INT/INT/RT
super4      gag/PR/PR/RT/INT/RH/RT    Bel-pao
super5      gag/PR/PR/RH/RT/RT/INT
super6      gag/PR/PR/RH/RT/IN

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:482016科比退役纪念章
日期:2018-01-19 12:45:59CU十四周年纪念徽章
日期:2018-03-16 13:09:5315-16赛季CBA联赛之北京
日期:2018-03-23 15:24:0715-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:3915-16赛季CBA联赛之深圳
日期:2018-05-04 21:53:0815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:42CU十四周年纪念徽章
日期:2018-05-15 11:36:38
发表于 2018-02-03 14:07 |显示全部楼层
回复 1# 小小脑


如上,a 文件包含3列:序列,长度,由/分开的domain         b文件是我想要的domain
问题:我如何根据b文件来筛选掉不想要的domain

  1. awk 'FILENAME==ARGV[1]{a[$0]=$0;next}{b=split($3,c,"/");for(i=1;i<=b;i++){if(a[c[i]]){f=f?f"/"c[i]:c[i]}};if(f){print $1,$2,f;f=""}}' b.txt a.txt
复制代码

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:482016科比退役纪念章
日期:2018-01-19 12:45:59CU十四周年纪念徽章
日期:2018-03-16 13:09:5315-16赛季CBA联赛之北京
日期:2018-03-23 15:24:0715-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:3915-16赛季CBA联赛之深圳
日期:2018-05-04 21:53:0815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:42CU十四周年纪念徽章
日期:2018-05-15 11:36:38
发表于 2018-02-03 15:42 |显示全部楼层
回复 6# 小小脑


厉害了大神!不好意思我想再问下如果以下两个文件,a 文件是序列,domain。  b文件是domain顺序,类别。我想根据b文件只要出现这些顺序的把a文件分下类。这样又如何操作呢?

  1. awk 'FILENAME==ARGV[1]{a[$1]=$2;next}{b=split($2,c,"/");for(i=1;i<=b;i++){if(c[i]!=c[i-1]){d=d?d"/"c[i]:c[i]}};for(j in a){if(d~"(^|/)"j"($|/)"){f=f?f"|"a[j]:a[j]}};print $0,f;d=f=""}' b.txt a.txt
复制代码

输出:
super1      Copia_gag/PR/RT/RT/RH/INT
super2      gag/PR/PR/PR/RT/INT/chromo
super3      Copia_gag/DUF/RT/RT/RH/INT/INT/INT/RT
super4      gag/PR/PR/RT/INT/RH/RT Bel-pao
super5      gag/PR/PR/RH/RT/RT/INT
super6      gag/PR/PR/RH/RT/IN

论坛徽章:
0
发表于 2018-02-04 17:49 |显示全部楼层
回复 9# wh7211

实践证明,确实好用。服气
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP