grepで見つかった行の一部のみを表示します(ただし、パターンと一致する部分は表示しません)。

grepで見つかった行の一部のみを表示します(ただし、パターンと一致する部分は表示しません)。

ではifcfg-eth0grep "DEVICE=eth0" を使用しました。

grep "DEVICE=" ifcfg-eth0

しかし、「eth0」だけを表示するようにパターンを見つける方法は?

答え1

grep実際にはツールではありません(GNU grepバージョンは同様の作業を行うためのさまざまなオプションを提供しますが)。sedまたはawk仕事に適しています。

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

答え2

grep-PこれはGNUオプション(PCRE)を使用して行うことができます。すべてのバージョンのGNUgrepコンパイルがこのオプションをサポートしているわけではないことに注意することが重要です-P

個人的に私はChris Downの提案に従っていますが、完全性のために必要な答えをawk提供したいと思いました。grep

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

この(?<=)構造をといいますlook-behind。一致を検索するために使用されますが、実際の一致には含まれません。

関連情報