繁体   English   中英

用bash从多个文本文件中提取列

[英]extract columns from multiple text files with bash

我正在尝试从多个文本文件(3000个文件)中提取列。 我的文本文件的示例如下所示。

res          ABS    sum
SER A   1   161.15 138.3 
CYS A   2    66.65  49.6
PRO A   3    21.48  15.8 
ALA A   4    77.68  72.0 
ILE A   5    15.70   9.0
HIS A   6    10.88   5.9

我只想在总和(最后一列)> 25时打印1)resnames(第一列)。 2)我想将输出存储到一个文件中3)我想在输出文件中添加一个新列,其中包含从中提取数据的txt文件的名称,并且还需要打印resnames的总数(仅当总和> 25时才从所有文本文件中获取

我想得到以下输出

SER   AA.txt
CYS   AA.txt
ALA   AA.txt
SER   BB.txt

Total numberof  SER- 2
Total number of ALA- 1
Total number of CYS- 1

如何使用Bash获得此输出? 我尝试了以下代码

for i in  files/*.txt
do
awk 'BEGIN{FS=OFS=" "}{if($5 > 25) print $1,i}'
done

有什么建议吗?

尝试:

awk '{ a[$1]++ } 
     END { for (k in a) print "Total number of " k " - " a[k] }' FILES

(未测试)

awk '{
    if ($NF ~ /([0-9])+(\.)?([0-9])+/ && $NF > 25) {
        print $1, FILENAME;
        res[$1]++;
    }
}
END {
     for (i in res) {
          print "Total number of ", i, "-", res[i];
    }
}' res.txt

这是我为您的示例得到的输出:

SER res.txt
CYS res.txt
ALA res.txt
Total number of  SER - 1
Total number of  CYS - 1
Total number of  ALA - 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM