2

我需要正则表达式的帮助来从大文件中提取 mac 地址。

这是文件的格式:

Wed Apr 25 10:15:32 EDT 2012 Client: 00aa11bb22cc mac
Wed Apr 25 10:15:34 EDT 2012 Client: aa11bb22cc33 pc

这是我目前没有运气的尝试:

grep -io '[0-9a-f]{12}' file.txt > macs.txt

有任何想法吗?我只想将 mac 地址部分提取到名为macs.txt.

4

5 回答 5

6

尝试:

grep -io '[0-9a-f]\{12\}' file.txt > macs.txt
于 2012-04-25T14:42:45.850 回答
2
((([0-9a-fA-F]{2})[ :-]){5}[0-9a-fA-F]{2})|(([0-9a-fA-F]){6}[
:-]([0-9a-fA-F]){6})|([0-9a-fA-F]{12})

我根据我知道的 MAC 地址的以下表达式对其进行了测试。取决于系统、固件和应用程序的语法。

F3 D3 A4 C1 99 E2
F3:D3:A4:C1:99:E2
F3-D3-A4-C1-99-E2
f3 d3 a4 c1 99 e2
f3:d3:a4:c1:99:e2
f3-d3-a4-c1-99-e2
f3d3a4 c199e2
f3d3a4:c199e2
f3d3a4-c199e2
f3d3a4c199e2
F3D3A4C199E2
于 2019-06-19T13:34:38.940 回答
1

一种使用方式sed

sed -e 's/^.*\([a-fA-F0-9]\{12\}\).*$/\1/' file.txt > macs.txt

结果:

00aa11bb22cc
aa11bb22cc33
于 2012-04-25T14:43:13.250 回答
0

egrep 会工作:

egrep -io '[0-9a-f]{12}' file.txt > macs.txt

grep 有 2 个选项来处理正则表达式,

grep -e 

grep -E

其中一个等于 egrep,我想现在你知道是哪个了。:)

于 2012-04-26T15:02:09.280 回答
0

此命令行将从常规文件中提取所有 MAC 地址。它适用于 macOS。

它从常规文件中提取其上的任何 MAC 地址。在示例中,常规文件file.txt具有混合信息,包括 MAC 地址。以下命令将提取它们并将它们保存在macs.txt文件中。

grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' file.txt > macs.txt

于 2020-09-07T14:28:46.240 回答