【发布时间】:2019-12-22 14:04:06
【问题描述】:
我有一种情况,我有大量文件,我需要检查它们是否包含列出的字符串,每行一个,在另一个文件中,并报告它们不包含的地方。 VLAN列表中的字符串匹配文件和要检查的大量文件是我们核心交换机的'show mac-address'的周期输出,这些是一堆txt文件。我正在使用 Linux Bash shell。
我可以很容易地使用 grep 覆盖匹配...
cat *.txt > [MAC-File] && fgrep -of [VLAN-File] [MAC-File] | sort -h | uniq -c
这给了我一个匹配的 VLAN 列表以及 txt 文件中的行数。这是一个进步,但我需要找到其中没有 MAC 地址的 VLAN,所以我需要扭转逻辑。我的搜索告诉我 grep 与 -o 没有相反的条件,所以我需要找到一个替代方案。这将应用于 3 个非常大的 LAN,每个 LAN 中都有数百个 VLAN,我不想将结果输入到 Excel 电子表格中!
请注意,我正在检查的文件每行的数据比仅 VLAN 编号的数据多,因此比较行不起作用。
要查找(或不查找!)字符串的第一个文件的格式为..
100
103
230
请注意,我在每个数字之前和之后都有空间以使它们唯一,因此它们仅匹配我正在检查的大数据文件的第二列格式
6c4b-904b-0c5c 230 Learned BAGG103 Y
【问题讨论】:
-
我假设 VLAN 号是第二列?
-
@kvantour 没错——所有文件都是在 Linux 下创建的,所以我相信没有 DOS 格式问题