2012-05-03 13 views
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 

を取得したいと思いますか?私は次のコードを試しました

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

お願いします。

答えて

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 
+0

ありがとうございました。 – Joel

1

試してみてください。

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

(未テスト)

関連する問題