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

simpler way to extract and count data

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

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

所以我做了

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

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

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

有没有更简单的方法来连接所有文件而不生成单个新文件

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

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

希望这对您有所帮助..

快速而肮脏

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

如果你解释得再多一点,在 shell 级别的第一个 for 可以直接使用 awk 跳过