2

複数のテキストファイル(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)出力を1つのファイルに保存したい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

何か提案はありますか?

4

2 に答える 2

1

試す:

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

(未検証)

于 2012-05-03T02:07:49.677 に答える
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
于 2012-05-03T02:48:27.987 に答える