solaris 10 + exibir 2 linhas após o jogo por grep?

2

Eu quero corresponder, por exemplo:

A string e1000g0 da lltconfig -a list e, em seguida, exibe as duas linhas após a string e1000g0

para obter apenas as linhas:

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

por favor, como obter as duas linhas depois?

exemplo completo de (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

Eu também tento isso (mas seu trabalho apenas para Linux e não em solaris -: (

       lltconfig -a list | grep -A 4 "e1000g0"  | grep -v "e1000g0"
       grep: illegal option -- A
       Usage: grep -hblcnsviw pattern file . . .
    
por yael 18.10.2012 / 16:39

3 respostas

2

Tente fazer isso:

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

Se você quiser algo mais geral:

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}'

(testado em Solaris11 )

    
por 18.10.2012 / 16:42
4

O Solaris 11 possui o GNU egrep, que pode fornecer linhas contextuais usando -A ou -B.

Ou, se você não tiver o GNU grep / egrep, então o script cgrep em link fornece um grep contextual com uma função similar.

    
por 18.10.2012 / 18:43
0

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

    
por 18.10.2012 / 17:00