2016-12-21 12 views
0

我一直在努力工作數週,我知道這是一個簡單的awk腳本,但我似乎無法取得進展。有什麼想法嗎?在1個文件的指定範圍內查找文件2中的數字,然後計算該範圍內另一列的平均值

我有兩個.txt文件,我正在處理。

文件1(第1列具有相同的值) -

1 1000 1 
1 1003 3 
1 1020 6 
1 167999 5 
1 167222 4 

文件2(第1列具有相同的值) -

1 1000 1050 
1 167000 168000 

我想在第2列中要搜索的值文件1落在文件2的第2列和第3列中指定的範圍內。然後,我想在現在指定的範圍內找到文件1中第3列的平均值,並輸出平均值列表。任何幫助非常感謝,因爲我仍然是編程世界的新手!

+0

你試用了什麼?提示,從讀取file2開始,將信息放入數組中,而不是讀取file1並處理計算'awk'...'file2 file1'。文件1 [第二文件讀取]可以通過'FNR!= NR'進行行篩選,file2 [第一個文件讀取]通過'FNR = NR'篩選 – NeronLeVelu

回答

0

這裏有一個片段,它應該幫助您入門:

awk -v rangefile=file2 ' 
BEGIN { 
    ranges=0 
    while((getline < rangefile) > 0) { 
     ++ranges 
     low[ranges] = $2 
     high[ranges] = $3 
    } 
} 
{ 
    for(i = 1; i <= ranges; i++) { 
     if($2 >= low[i] && $2 <= high[i]) { 
      ... 
     } 
    } 
} 
END { 
    for(i = 1; i <= ranges; i++) { 
     print low[i], high[i] 
    } 
} 
' file1 

我沒有在...部分填充,但我希望上面覆蓋了棘手的部分。對於...,您可以使用數組來計算總數和計數類似於數組的低和高。在END塊中,您將重複for(i ...)循環,並在該循環內打印出您想要的輸出格式。