awk 抓取文件子集

awk 抓取文件子集,第1张

概述有一个文件我只想要里面的部分样本数据,文件结构如下: $head -1 genus.xlsOTU ID A1 A2 A3 M15B1 M15B2 M15B3 M15C1 M15C2 M15C3 M15D1 M15D2 M15D3 M15E1 M15E2 M15E3 M27B1 M27B2

有一个文件我只想要里面的部分样本数据,文件结构如下:

$head -1 genus.xlsOTU ID    A1    A2    A3    M15B1    M15B2    M15B3    M15C1    M15C2    M15C3    M15D1    M15D2    M15D3    M15E1    M15E2    M15E3    M27B1    M27B2    M27B3    M27C1    M27C2    M27C3    M27D1    M27DM27D3    M27E1    M27E2    M27E3    R15b1    R15b2    R15b3    R15c1    R15c2    R15c3    R15d1    R15d2    R15d3    R15e1    R15e2    R15e3    R27b1    R27b2    R27b3    R27c1    R27c2    R27c3    R27d1    R27dR27d3    R27e1    R27e2    R27e30319-6G20_norank    17    22    21    44    24    24    6    15    34    17    18    7    55    29    32    46    78    61    13    2    27  37    61    72    55    146    196    26    24    19    17    16    4    77    45    27    58    47    36    48    37    141    13    28    10  38    87    61    62    83    119

抓取的样本名:

$cat group.List M15B1M15B2M15B3M27B1M27B2M27B3 R15b1R15b2 R15b3R27b1 R27b2R27b3

 AWK实现:

$awk -F "\t" NR==FNR{a[]=1}NR>FNR{if(FNR==1){for(i=1;i<=NF;i++){if(a[$i]){num =num+1;b[num]=i;}}printf ;for(i=1;i<=length(b);i++){printf "\t"$b[i]}print""}else{printf ;for(i=1;i<=length(b);i++){printf "\t"$b[i]}print""}} group.List genus.xls >select.txt

部分结果展示:

$head select.txtOTU ID    M15B1    M15B2    M15B3    M27B1    M27B2    R15b1    R15b3    R27b2    R27b30319-6G20_norank    44    24    24    46    78    26    19    37    1410319-6M6_norank    1    0    0    0    0    1    0    0    01921-2_norank    0    0    1    0    0    1    0    1    01921-3_norank    2    4    1    0    2    1    1    0    21959-1_norank    16    13    27    19    11    16    24    17    19480-2_norank    57    41    84    52    51    40    45    39    52ABS-19_norank    2    1    1    0    1    0    1    2    1AKIW1012_norank    0    0    0    0    0    0    0    0    0AKYH478_norank    0    0    0    0    0    0    0    0    0

 处理过程是  先根据要挑选的样本名索取在文件第一行对应样本名的下标   然后根据样本下标提取每行信息

AWK print 默认在字符后面加换行符 printf 可以去除这个效果参考路径:https://blog.csdn.net/xuejinliang/article/details/51441971AWK读取多行文件参考路径:https://www.cnblogs.com/Berryxiong/p/6209332.HTML
总结

以上是内存溢出为你收集整理的awk 抓取文件子集全部内容,希望文章能够帮你解决awk 抓取文件子集所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1031405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存