使用awk查找min和max?

时间:2014-09-15 00:49:30

标签: awk text-processing

我有一个包含许多类型行的大文件。其中一种类型是这种形式的行:

这些行都以ATOM开头,第7-9个字段是指定原子的x,y和z值。如何使用awk查找所有ATOM行,然后计算x,y和z值的最小值和最大值?

这是我的档案:http://pastebin.com/EqA2SUMy

其中一种类型是这种形式的行:

ATOM      1  N   ASP A 435       7.397  28.376 121.784  1.00 34.35           N  
ATOM      2  CA  ASP A 435       8.023  27.301 122.545  1.00 30.66           C  
ATOM      3  C   ASP A 435       8.170  27.721 124.009  1.00 31.39           C  
ATOM      4  O   ASP A 435       9.078  28.509 124.284  1.00 38.78           O  

有人能告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:2)

#!awk -f
BEGIN {
  min7 = min8 = min9 = 1000
}
$1 == "ATOM" {
  if ($7 < min7)
    min7 = $7
  if ($8 < min8)
    min8 = $8
  if ($9 < min9)
    min9 = $9
  if ($7 > max7)
    max7 = $7
  if ($8 > max8)
    max8 = $8
  if ($9 > max9)
    max9 = $9
}
END {
  print min7, min8, min9
  print max7, max8, max9
}