如何在日志输出中找到多个条目?

如何在日志输出中找到多个条目?

我目前使用 grep 在日志输出中查找字符串。我的新任务要求我在各个文件中查找多个条目。特别是连接到交换机端口的 MAC 地址条目。在对网络(5k+ 设备)进行审核后,我并不担心会发现那些被报告来自交换机端口 1 的具有单个 MAC 的文件。对于在交换机端口 1 上学习超过 1 个 MAC 的交换机,我需要找到这些文件并输出该信息。

理想情况下,如果我可以在一行中搜索所有 48 个端口,那将使我的工作变得更轻松。如果我确实必须将这份清单浏览 48 遍,那也不是世界末日。

提前谢谢你们。抱歉,这是我在这个平台上问的第一个问题。

我目前所做的示例:

grep "ge-0/0/2.0" example1.log
INTERNET       de:ad:be:ef:00:01 Learn       2:21 ge-0/0/2.0
INTERNET       de:ad:be:ef:00:02 Learn          0 ge-0/0/2.0
DATA           de:ad:be:ef:01:01 Learn       4:20 ge-0/0/2.0

grep "ge-0/0/20.0" example1.log
POS            de:ad:be:ef:02:01 Learn          0 ge-0/0/20.0

grep "ge-0/0/2*.0" example1.log
INTERNET       de:ad:be:ef:00:01 Learn       2:21 ge-0/0/2.0
INTERNET       de:ad:be:ef:00:02 Learn          0 ge-0/0/2.0
DATA           de:ad:be:ef:01:02 Learn          0 ge-0/0/30.0
DATA           de:ad:be:ef:01:01 Learn       4:20 ge-0/0/2.0
POS            de:ad:be:ef:02:02 Learn          0 ge-0/0/10.0
POS            de:ad:be:ef:02:01 Learn          0 ge-0/0/20.0

但获取原始信息可能会变得乏味并且容易犯错误。我的所有开关都以相同的 2 个字母开头,这样在我查看它的输出之前就更容易了。像上面的 ge-0/0/20.0 这样的单行条目很容易混合在一起。

我从上面的例子中确切寻找的是:

INTERNET       de:ad:be:ef:00:01 Learn       2:21 ge-0/0/2.0
INTERNET       de:ad:be:ef:00:02 Learn          0 ge-0/0/2.0
DATA           de:ad:be:ef:01:01 Learn       4:20 ge-0/0/2.0

答案1

我想您正在寻找多模式 grep。

grep 'pattern1\|pattern2' logfile

或者

grep -E 'pattern1|pattern2' logfile

图案的数量可以任意多长。它将打印匹配pattern1OR的行pattern2

相关内容