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

kyu*_*n93 5 grep text-processing

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

grep "DEVICE=" ifcfg-eth0
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*own 9

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

awk -F= '$1 == "DEVICE" { print $2 }'
Run Code Online (Sandbox Code Playgroud)
sed -n 's/^DEVICE=//p'
Run Code Online (Sandbox Code Playgroud)


jor*_*anm 7

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

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

grep -Po '(?<=DEVICE=).+' ifcfg-eth0
Run Code Online (Sandbox Code Playgroud)

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