计算与子字符串匹配的纯文本文件中的行

时间:2013-12-17 11:01:36

标签: batch-file duplicate-removal

我有一个如下文所示的纯文本文件:

11/03/20 09:42:45 APP Service A stopped.
11/03/20 09:42:46 APP Starting service A.
11/03/20 09:42:46 APP Starting service A.
11/03/20 09:44:01 APP Service A stopped.
11/03/20 09:44:02 APP Starting service A.
11/03/20 09:44:02 APP Starting service A.
11/03/20 09:45:02 APP Service A stopped.

...

此文件仅指一项服务(服务A)。如您所见,包含“Starting”子字符串的行每次都重复两次。

使用批处理文件(ms-dos bat文件)我想计算纯文本文件中包含子字符串“Starting”的行数,但我不想计算重复的行。

例如,从下面的纯文本文件中忽略重复的行,我想要以下输出:

2

而不是(考虑重复的行):

4

我知道如何通过考虑重复的行而不是忽略它们来做到这一点。我在下面表演:

findstr /N "Starting" plain_text_file.txt | find /c ":"

任何不计算重复行的想法?

也许,一旦我得到结果(行数),我可以将它们除以2,但我不认为这是一种优雅的方式。

2 个答案:

答案 0 :(得分:2)

试试这个:

@ECHO OFF &SETLOCAL
for /f "delims=" %%a in ('^<file find "Starting"') do set "$%%a=7"
for /f %%a in ('set $') do set /a count+=1
echo(%count%

答案 1 :(得分:-1)

如果您可以使用Cygwin,您可以使用

uniq

实现此目的的命令。

您可能想在DOS中尝试http://www.richpasco.org/utilities/unique.html来执行此操作。 语法是:

UNIQUE <infile.txt >outfile.txt