-1

我需要查看多个文件中的数千个日志条目,并找到其中包含特定单词的行。从包含一个单词的行列表中,我需要过滤掉具有作为该行一部分的唯一字符串的行。

例如,查看下面的日志文件,假设我需要查找所有包含单词“Test”的日志行。然后,在所有包含“测试”一词的行中,我需要查看该行的其余部分,并且只选择每个事件的一个实例。例如,如果有两行包含“Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23”,无论该行的其余部分是什么,我只想记录该行的一个实例。

4

1 回答 1

0

在 *nix 命令行上,有grep(实现之间略有不同)。使用 GNU/grep,有一个“-m”开关在第一次匹配时停止,例如:

$ grep Test log.txt | grep -m1 'Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23'
-10-30-123-012-031-22 Test Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23 djlkdj

要在日志文件中搜索例如“测试”,然后只关注某些部分,我喜欢使用sed来“清理”日志文件:

$ grep Test log.txt | sed 's/.*Test/Test/;s/ djlkdj$//' | sort | uniq -c
   4 Test Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23
   2 Test Source 192.168.0.1 Port 23 Destination 192.168.0.222 Port 25
   4 Test Source 192.168.0.1 Port 25 Destination 192.168.0.2 Port 23
   2 Test Source 192.168.5.1 Port 23 Destination 192.168.0.2 Port 23

不确定这是否是您想要的。

于 2013-08-11T01:03:09.640 回答