10ª linha anterior de um jogo [duplicado]

1

Como posso obter a décima linha anterior de uma partida? Eu acho que usar o grep com a opção B e depois colocá-lo na cabeça funcionaria, mas existe uma maneira mais simples de fazer isso?

Por exemplo, se eu tivesse um arquivo de texto como este

a
b
c
d
e
f
g
h
i
j
k
l
m

e se eu escolhi o padrão para ser "l", eu vou pegar a 10ª linha anterior, que é "b".

    
por stacko 29.12.2016 / 22:58

1 resposta

5

A abordagem grep / head funciona perfeitamente bem. Dúvida, há um jeito mais simples. Se houver várias correspondências, apenas mostrará a primeira correspondência.

$ grep -B 10 l x|head -1
b
$

GNU awk solution, usando um buffer circular. Se houver várias correspondências, mostra cada correspondência.

$ awk '/^l$/{print a[NR%10]};{a[NR%10]=$0}' x
b
$
    
por 29.12.2016 / 23:13