【发布时间】:2020-10-08 22:36:27
【问题描述】:
如何 grep 某些内容并防止该短语出现在结果中?
我试图只从多个系统中获取 MAC 地址,并且只希望结果中的 MAC 地址。
ipmitool lan print | grep "MAC Address : "
# => MAC Address : aa:bb:cc:dd:ee:ff
我尽可能使用谷歌尝试添加-oP 和\K\w+,但由于某种原因,它只能得到 MAC 的前 2 位数字:
ipmitool lan print | grep -oP "MAC Address : \K\w+"
# => aa
我知道-o 只会显示匹配的文本,这就是 MAC 地址没有显示的原因,-P 与 \K 一起使用会阻止中间的所有内容显示,但不确定到底是什么放在\w+ 之后以显示 MAC 地址的其余部分。
【问题讨论】:
-
试试
grep -oP "MAC Address : \K\S+" -
非常感谢!明白了~
-
Wiktor Stribiżew 能否将其发布为答案,以便我将其标记为已回答?
-
虽然stackoverflow.com/a/62840426/11329890 看起来像一个答案,但它的
.*可以比一个词走得更远,而MAC 地址就是一个词。这篇文章看起来很有用,对模式有更好的解释。