仅显示 grep 找到的行的一部分(但不显示与模式匹配的部分)

仅显示 grep 找到的行的一部分(但不显示与模式匹配的部分)

在 中ifcfg-eth0,我设法使用 grep "DEVICE=eth0"

grep "DEVICE=" ifcfg-eth0

但是我怎样才能 grep 模式只显示“eth0”呢?

答案1

grep并不是真正的工具(尽管 GNU grep 版本提供了执行类似操作的各种选项)。sed或者awk更适合这项任务。

awk -F= '$1 == "DEVICE" { print $2 }'
sed -n 's/^DEVICE=//p'

答案2

grep使用带有-P选项 (PCRE)的 GNU 可以做到这一点。重要的是要注意,并非所有版本的 GNUgrep编译时都支持该-P选项。

我个人会awk按照 Chris Down 的建议使用,但我想提供grep完整性要求的答案。

grep -Po '(?<=DEVICE=).+' ifcfg-eth0

(?<=)构造被称为 a look-behind。它用于查找匹配项,但不包含在实际匹配项中。

相关内容