问题描述
我正在尝试仅从多个系统中获取MAC地址,并且只希望结果中包含MAC地址。
ipmitool lan print | grep "MAC Address : "
# => MAC Address : aa:bb:cc:dd:ee:ff
我通过添加-oP
和\K\w+
来尝试使用google,但由于某种原因,它只能得到MAC的前两位:
ipmitool lan print | grep -oP "MAC Address : \K\w+"
# => aa
我知道-o
仅显示匹配的文本,这就是为什么未显示MAC地址的原因,而-P
与\K
一起使用将阻止中间的所有内容显示但不确定要在\w+
之后加上什么来显示其余的MAC地址。
解决方法
您可以将其与
匹配grep -oP 'MAC Address : \K\S+' file
在这里
-
-o
-提取匹配的文本,而不是整行 -
P
-启用PCRE regex语法 -
MAC Address :
-匹配文字 -
\K
-匹配重置运算符,用于从内存匹配缓冲区中丢弃到目前为止已匹配的文本 -
\S+
-一个或多个非空白字符。