我需要一个正则表达式的帮助来从大文件中提取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
的文件中。
答案 0 :(得分:6)
尝试:
grep -io '[0-9a-f]\{12\}' file.txt > macs.txt
答案 1 :(得分:1)
使用sed
的一种方式:
sed -e 's/^.*\([a-fA-F0-9]\{12\}\).*$/\1/' file.txt > macs.txt
结果:
00aa11bb22cc
aa11bb22cc33
答案 2 :(得分:0)
egrep会起作用:
egrep -io '[0-9a-f]{12}' file.txt > macs.txt
grep有两个选项来处理正则表达式,
grep -e
和
grep -E
其中一个等于egrep,我猜你现在知道哪个了。 :)
答案 3 :(得分:0)
((([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
答案 4 :(得分:0)
此命令行将从常规文件中提取所有MAC地址。它适用于macOS。
grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' file.txt > macs.txt