2013-08-20 53 views
0

我想要做一個循環,將採取我的輸入文件的10行並將其輸出到輸出文件。並繼續向輸出文件添加行,而不是寫入輸出文件。一次處理10行樣本數據

這是一個簡單的數據:

FilePath Filename Probability ClassifierID HectorFileType LibmagicFileType 

/mnt/Hector/Data/benign/binary/benign-pete/ 01d0cd964020a1f498c601f9801742c1 19 S040PDFv02 data.pdf PDF document 

/mnt/Hector/Data/benign/binary/benign-pete/ 0299a1771587043b232f760cbedbb5b7 0 S040PDFv02 data.pdf PDF document 

然後我用這個來計算每一個獨特的文件,並顯示每個文件的有多少有:

cut -f 4 input.txt|sort| uniq -c | awk '{print $2, $1}' | sed 1d 

所以,最後我只需要幫助創建一個循環,可以運行該bash行並一次輸出10行數據到輸出文件

+0

只是要清楚,這不是一線bash。這是一個執行大量外部命令的shell腳本。 – kojiro

+1

我不明白你在問什麼 - 你想從你的樣本數據中一次處理10行,還是你想一次緩衝10條流水線,只有當緩衝區寫入文件時有10行嗎? – kojiro

+0

感謝您的糾正,我想在時間 – iOSecure

回答

1

如果我理解正確,對於每行10行的塊,您試圖:

  1. 跳過標題,塊
  2. 計數多少次字段#4(ClassifierID)發生並輸出的場,加計數的第一行。

這裏是一個AWK腳本,將做到這一點:

FNR % 10 != 1 { 
    ++count[$4] 
} 

FNR % 10 == 0 { 
    for (i in count) { 
     print i, count[i] 
     delete count[i] 
    } 
} 

討論

  • FNR % 10 != 1塊過程的每一行,但行1,11,21,...又名你想跳過的行。此塊領域保持的計數$ 4
  • FNR % 10 == 0塊打印出該塊和重置摘要(通過刪除)次數
  • 我的腳本無法將字段進行排序,這樣的順序可能會有所不同。
  • 如果你想相符整個文件,而不僅僅是阻止10S,再用END替換FNR % 10 == 0
+0

謝謝你,那正是我一直在試圖做 – iOSecure

+0

我得到這些錯誤,當我嘗試運行它:awk的2script.awk AWK:CMD。行:1:意外的標記 – iOSecure

+1

你嘗試過'awk -f 2script.awk'嗎?不要忘記'-f'標誌。 –