对于一堆文件,您将连续使用哪些Linux命令来计算文件中的行数,并使用相应输入的一部分输出到输出文件文件作为输出行的一部分。因此,例如,我们在看文件LOG_Yellow
,它有28行,将输出文件将有一个这样的线(Yellow
和28
的制表符分隔):用于输出部分输入文件名称和行数的Linux命令
Yellow 28
对于一堆文件,您将连续使用哪些Linux命令来计算文件中的行数,并使用相应输入的一部分输出到输出文件文件作为输出行的一部分。因此,例如,我们在看文件LOG_Yellow
,它有28行,将输出文件将有一个这样的线(Yellow
和28
的制表符分隔):用于输出部分输入文件名称和行数的Linux命令
Yellow 28
wc -l [filenames] | grep -v " total$" | sed s/[prefix]//
wc -l以几乎正确的格式生成输出; grep -v删除wc为你生成的“总”行; sed从文件名中去除你不想要的垃圾。
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
wc -l *| grep -v " total"
发送
28黄
可以逆转,如果你想(awk,如果你没有文件名空间) wc -l *| egrep -v " total$" | sed s/[prefix]// | awk '{print $2 " " $1}'
将Sbodd的调用添加到'sed'中,这就是答案。 – Welbog 2009-09-02 17:24:13
短写剧本给你的:
是否所有文件都以LOG_开头? – 2009-09-02 17:21:14
是的。我认为使用awk和wc -l的组合应该是最好的。 – biznez 2009-09-02 17:24:03
我为什么没有关闭超级用户(或者serverfault,如果你认为所有的linux问题都与服务器有关)都不知所措。 – rmeador 2009-09-02 18:01:07