提取和计算数据的简单方法

时间:2016-01-14 04:06:12

标签: shell awk count cat

我需要从我的数据中提取特定信息并对其进行总结。

我有246个文件,我需要做同样的事情。

所以我做了

 for f in *.vcf; awk -F"\t" 'NR>1 {split($10,a,":");
              count10[a[7]]++}
        END  {for (i in count10)
                if (i>0.25)
                  sum += count10[i];
              print sum }' "$f" > ${f}.txt

我为每个旧文件获取新文件,其中包含我从旧文件中提取的信息(某些整数)

然后我使用cat函数连接新文件以生成一个最终的大文件

是否有更简单的方法可以连接所有文件而不生成单个新文件

2 个答案:

答案 0 :(得分:1)

您可以将代码中的最后一行更改为如下所示,然后将继续附加到您的FINAL输出文件,如下所示

for f in *.vcf; awk -F"\t" 'NR>1 {split($10,a,":");
          count10[a[7]]++}
    END  {for (i in count10)
            if (i>0.25)
              sum += count10[i];
          print sum }' "$f" >> FINAL.txt

希望这会有所帮助..

答案 1 :(得分:0)

快速而肮脏

rm Summary.txt 2>/dev/null 
for f in *.vcf; awk -F"\t" 'NR>1 {split($10,a,":");
              count10[a[7]]++}
        END  {for (i in count10)
                if (i>0.25)
                  sum += count10[i];
              print sum >> Summary.txt }' "$f"

如果再解释一下,可以直接使用awk跳过第一个shell级别