![如何在日志输出中找到多个条目?](https://linux22.com/image/155492/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%97%A5%E5%BF%97%E8%BE%93%E5%87%BA%E4%B8%AD%E6%89%BE%E5%88%B0%E5%A4%9A%E4%B8%AA%E6%9D%A1%E7%9B%AE%EF%BC%9F.png)
我目前使用 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
图案的数量可以任意多长。它将打印匹配pattern1
OR的行pattern2
。