2009-09-02 59 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”以找出行数
  • 不要忘记到 (“>”或“>>”)的结果重定向到您的 输出文件
相关问题