我如何 grep 某些东西并防止该短语出现在结果中?
How do I grep something and prevent the phrase appearing in the results?
如何 grep 某些内容并防止该短语出现在结果中?
我试图从多个系统中仅获取 MAC 地址,并且只希望结果中包含 MAC 地址。
ipmitool lan print | grep "MAC Address : "
# => MAC Address : aa:bb:cc:dd:ee:ff
我使用 google 的尝试是通过添加 -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+' file
这里,
-o
- 提取匹配的文本,而不是整行
P
- 启用 PCRE 正则表达式语法
MAC Address :
- 匹配文字文本
\K
- 匹配重置运算符,丢弃到目前为止匹配到内存匹配缓冲区的文本
\S+
- 一个或多个 non-whitespace 个字符。
如何 grep 某些内容并防止该短语出现在结果中?
我试图从多个系统中仅获取 MAC 地址,并且只希望结果中包含 MAC 地址。
ipmitool lan print | grep "MAC Address : "
# => MAC Address : aa:bb:cc:dd:ee:ff
我使用 google 的尝试是通过添加 -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+' file
这里,
-o
- 提取匹配的文本,而不是整行P
- 启用 PCRE 正则表达式语法MAC Address :
- 匹配文字文本\K
- 匹配重置运算符,丢弃到目前为止匹配到内存匹配缓冲区的文本\S+
- 一个或多个 non-whitespace 个字符。