![](/img/trans.png)
[英]Extract columns from multiple text files with bash or awk or sed?
[英]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.