我正在尝试从多个文本文件(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
我想打印 1)仅当总和(最后一列)> 25时才重新命名(第一列)。 2)我想将输出存储到一个文件中 3)我想在outputfile中添加一个新列,其中包含提取数据的txt文件的名称,还需要打印resnames的总数(仅当sum> 25时才从所有文本文件中删除)< / p>
我想获得以下输出
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
有什么建议吗?
答案 0 :(得分:1)
尝试:
awk '{ a[$1]++ }
END { for (k in a) print "Total number of " k " - " a[k] }' FILES
(未经测试)
答案 1 :(得分:0)
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