2014-05-06 60 views
1

我有一個包含數行的文本文件,以「#控制點否」開頭的字符串和輸出最後一個字一個文本文件中的每一行UNIX找到包含這些

我設法得到一個通過做

的grep「#控制點不」

輸出只有這些線現在我只想把所有這些線路的最後一個字。

的線條看起來像

「#控制點號39217:1.52520046527084」

所以我想輸出只有最後一個數字爲1.52520046527084

然後:

最低-find值

- 查看最高值

- 計算平均值

這一切我想要做的是不是所有包含在文章標題,對不起

感謝

+0

寫一個小的Perl/Python/Ruby程序來做到這一點? –

回答

0

Python是您的朋友:

#!/usr/bin/python 

import re, fileinput, sys 

numlines = 0 
lowest = sys.float_info.max 
highest = sys.float_info.min 
total = 0.0 
for line in fileinput.input(): 
    m = re.match(r'# Control Point No (\d+): (.+)', line) 
    if m: 
     value = float(m.group(2)) 
     numlines += 1 
     if value < lowest: 
      lowest = value 
     if value > highest: 
      highest = value 
     total += value 

print "lowest=", lowest, ", highest=", highest, ", average=", (total/numlines) 

$ chmod 0755 procdata.py 
$ ./procdata.py < testdata 
lowest= 1.0 , highest= 67.9 , average= 7.31550797863 
+0

謝謝。非常令人印象深刻的簡單方法。我不知道Python,但只是設法讓它起作用,速度如此之快。 – Greg

+0

@Greg通過編譯該正則表達式可以進一步加速它;我從來沒有打擾過。 – trojanfoe

+0

我剛剛在打印行的末尾添加了「,Control Points =」,numlines來獲取控制點的數量。完美 – Greg