grep을 통해 일치시킨 후 Solaris 10 + 2 줄이 표시됩니까?

grep을 통해 일치시킨 후 Solaris 10 + 2 줄이 표시됩니까?

예를 들어 다음과 일치시키고 싶습니다.

e1000g0~에서lltconfig -a 목록 를 입력한 다음 e1000g0 문자열 뒤에 두 줄을 표시합니다.

그래서 나는 다음 줄만 얻습니다.

       Node   0 du1a      :   00:21:28:14:76:68
       Node   1 du1b      :   00:21:28:59:72:C4  permanent

그 후에 두 행만 얻는 방법을 제안해 주세요.

( lltconfig -a list )의 전체 예:

 lltconfig -a list
 Link 0 (e1000g0):
       Node   0 du1a      :   00:21:28:14:76:68
       Node   1 du1b      :   00:21:28:59:72:C4  permanent


 Link 1 (e1000g1):
       Node   0 du1a      :   00:21:28:14:76:69
       Node   1 du1b      :   00:21:28:59:72:C5  permanent


 Link21 (e1000g2):
       Node   0 du1a      :   00:21:28:14:76:49
       Node   1 du1b      :   00:21:28:59:72:A5  permanent

나는 또한 이것을 시도했습니다 (그러나 그것은 솔라리스가 아닌 Linux에서만 작동합니다 -:(

       lltconfig -a list | grep -A 4 "e1000g0"  | grep -v "e1000g0"
       grep: illegal option -- A
       Usage: grep -hblcnsviw pattern file . . .

답변1

Solaris 11에는 -A 또는 -B를 사용하여 컨텍스트 줄을 제공할 수 있는 GNU egrep이 있습니다.

또는 GNU grep/egrep이 없는 경우 스크립트는 다음 cgrep위치에 있습니다.http://www.intuitive.com/wicked/showscript.cgi?036-cgrep.sh유사한 기능을 갖춘 컨텍스트 grep을 제공합니다.

답변2

이 시도:

var='Link 0'
lltconfig -a list |
    awk '/'"$var"'/{l=1;next} /(^$)/{l=0} l==1  {print}'

좀 더 일반적인 것을 원한다면:

grep="pattern" # the string where we begin
max=4          # the number of lines after the matched pattern
awk '/'"$grep"'/{l=1;count=NR;next} l>0 && NR-count < '"$max"+1' {print}'

(테스트 대상 Solaris11)

답변3

lltconfig -a list | awk 'BEGIN{n=0}/e1000g0/{n=NR}n&&NR>n&&NR<n+3{print}'

관련 정보