2013-08-20 24 views
-1

之前處理數據:一部分-bash

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 
/mnt/Hector/Data/benign/binary/benign-pete/ 02a3f29050abd76f8d5dbe5972dff932 

運行下面的代碼後(第一列是分類器和它旁邊是文件的數量):

S036GDLv02 1 
S040PDFv02 218 
S043GUIv02 11 
S046CONv02 1 

我想指定我想這運行的代碼行經過:

for i in input.txt; 

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

我想創建一個腳本,我可以告訴它例如通過10行來運行該代碼,並將其輸出到文件output.txt。是否有可能做到這一點,最好的辦法是什麼?

+0

你問'sed的-n'? –

+1

重複http://stackoverflow.com/questions/18335644/process-10-lines-of-the-sample-data-at-a-time? –

+0

是的,一個副本,因此downvote。 – iamauser

回答

2

當你說「通過十條線」時,很難知道你的意思。你想只計算10行input.txt中的條目,還是返回前10條。

這將返回一個文件的前十個條目,按照丰度排序。

# function to return the ten most common items in a file 
# usage: topten input.txt >> output.txt 
topten(){ 
    cut -f 4 [email protected] | sort | uniq -c | sort -nr | awk '{print $2, $1}' | head -10 
} 

指定多少條目返回:

# function to return the N most common items in a file 
# usage: topN input.txt 20 >> output.txt 
topN(){ 
    cut -f 4 $1 | sort | uniq -c | sort -nr | awk '{print $2, $1}' | head -$2 
} 
+0

頭-10工作,謝謝。是否可以像「echo 20」那樣說,然後命令切換到「head -20」? – iOSecure

+1

您可以使用'$ 1'作爲文件名,使用$ 2作爲'head'命令,然後用兩個參數調用它。我將編輯以添加該示例。 – beroe

+1

+1用於讀取OPs頭腦。 – devnull