2009-09-02 56 views
0

對於一堆文件,您將連續使用哪些Linux命令來計算文件中的行數,並使用相應輸入的一部分輸出到輸出文件文件作爲輸出行的一部分。因此,例如,我們在看文件LOG_Yellow,它有28行,將輸出文件將有一個這樣的線(Yellow28的製表符分隔):用於輸出部分輸入文件名稱和行數的Linux命令

Yellow 28 
+0

是否所有文件都以LOG_開頭? – 2009-09-02 17:21:14

+0

是的。我認爲使用awk和wc -l的組合應該是最好的。 – biznez 2009-09-02 17:24:03

+0

我爲什麼沒有關閉超級用戶(或者serverfault,如果你認爲所有的linux問題都與服務器有關)都不知所措。 – rmeador 2009-09-02 18:01:07

回答

4
wc -l [filenames] | grep -v " total$" | sed s/[prefix]// 

wc -l以幾乎正確的格式生成輸出; grep -v刪除wc爲你生成的「總」行; sed從文件名中去除你不想要的垃圾。

2
wc -l * | head --lines=-1 > output.txt 

產生的輸出是這樣的:

linecount1 filename1 
linecount2 filename2 

我認爲你應該能夠從這裏工作以滿足你的需求。

編輯:由於我沒有看到你的名字提取規則,我仍然留下全名。然而,與其他答案不同,我傾向於使用head而不是grep,它不僅應該稍微快一點,而且還可以避免過濾掉名爲total*的文件。

EDIT2(看了評論):下面做了一大堆:

wc -l * | head --lines=-1 | sed s/LOG_// | awk '{print $2 "\t" $1}' > output.txt 
2

wc -l *| grep -v " total" 發送

28黃

可以逆轉,如果你想(awk,如果你沒有文件名空間) wc -l *| egrep -v " total$" | sed s/[prefix]// | awk '{print $2 " " $1}'

+0

將Sbodd的調用添加到'sed'中,這就是答案。 – Welbog 2009-09-02 17:24:13

1

短寫劇本給你的:

  • 「爲」通過文件循環。
  • 「迴響-n」打印當前文件
  • 「WC -l」以找出行數
  • 不要忘記到 (「>」或「>>」)的結果重定向到您的 輸出文件
相關問題