如何删除某些内容并阻止该短语出现在结果中?

问题描述

我该如何删除某些内容并阻止该短语出现在结果中?

我正在尝试仅从多个系统中获取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+-一个或多个非空白字符。