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)을 사용하여 수행할 수 있습니다. 모든 버전의 GNU grep컴파일이 이 옵션을 지원하는 것은 아니라는 점에 유의하는 것이 중요합니다 -P.

개인적으로 나는 Chris Down의 제안을 따르겠지만 , 완전성을 위해 필요한 답변을 awk제공하고 싶었습니다 .grep

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

(?<=)구조를 이라고 합니다 look-behind. 일치 항목을 찾는 데 사용되지만 실제 일치 항목에는 포함되지 않습니다.

관련 정보