Grep de uma linha e imprimir texto específico acima dessa linha

0

Atualmente, estou enfrentando um script desafiador, no qual preciso fazer um grep para os seguintes 700e10, por exemplo, na coluna partnum e encontrar / grep para "rstcb" acima dessa linha. O problema é que não é um número fixo de linhas acima do grep para "rstcb".

EtapasparaconseguirissoPasso1:Selecthex(partnum)fromsystableswheretabname="stocks"

saída por exemplo: 0x00700e10

Passo 2: (informix) Executar onstat -g opn | grep -i 700e10

Etapa 3: Você obterá o texto acima da imagem, por exemplo

Eu gostaria de incluir um grep que possa procurar o texto rstcb acima do resultado inicial da etapa 2. Depois disso, eu gostaria de awk '{print $2}' o número 700000036d048e8

    
por Christopher Karsten 25.08.2016 / 12:08

1 resposta

1

Se eu tiver acertado o requisito, um breve awk deve fazê-lo:

$ cat > test
rstcb 999999999999
rstcb 700000000123
foo bar doo partnum
1 2 3 4
5 6 7 7001e0

$ awk -vkey=7001e0  '/^rstcb/ {val=$2; next} $4 == key {print val; exit}' test   
700000000123

Isso salva o segundo campo de qualquer linha que começa com rstcb e imprime o valor salvo (o último) se uma linha for atendida, onde o quarto campo corresponde a 7001e0 ou o que for que key foi definido no linha de comando.

O next no primeiro bloco de códigos ignora o segundo teste e o exit está lá para parar após a primeira correspondência. Se você remover isso, receberá vários hits, mas eles podem ser da mesma linha rstcb .

    
por 25.08.2016 / 12:28