我有这张桌子:
Source Protocol
10.0.0.6 IGMPv3
10.0.0.6 SSDP
fe80::2998:5ae5:5e72:7f9 SSDP
fe80::2998:5ae5:5e72:7f9 SSDP
a0:48:1c:df:1b:1b ARP
a0:48:1c:df:1b:1b ARP
10.0.0.11 TCP
10.0.0.11 HTTP
Vmware_98:56:e6 ARP
Vmware_98:56:e6 ARP
12.0.0.11 IGMPv6
23.3.1.11 BROWSER
我需要过滤mac地址而不用硬编码,预期输出:
Source Protocol
10.0.0.6 HTTP
10.0.0.6 SSDP
10.0.0.11 TCP
10.0.0.11 HTTP
12.0.0.11 IGMPv6
23.3.1.11 BROWSER
答案 0 :(得分:1)
你可以尝试:
dat[grep("^\\d+\\.\\d+\\.\\d+\\.\\d+$",dat$Source),]
# Source Protocol
#1 10.0.0.6 IGMPv3
#2 10.0.0.6 SSDP
#7 10.0.0.11 TCP
#8 10.0.0.11 HTTP
#11 12.0.0.11 IGMPv6
#12 23.3.1.11 BROWSER
答案 1 :(得分:1)
(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.*$)
您也可以尝试这一点。只需抓住比赛或小组。参见演示。
http://regex101.com/r/nB2lL9/7
修改强>:
在R中它将是(假设df
是您的数据集)
df[grep("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}.*$", df$Source), ]