Imprime linhas não consecutivas da lista de números de linha do arquivo

0

Considere que depois de grep , awk e grep novamente, tenho uma lista de números de linha com esta aparência:

20
55
98
154
1100
...

O comando que estou usando é assim:

grep '01/01' /var/log/some.log | grep 'some' | awk '{print $10}' | grep -vn 200 | awk -F ':' '{print $1}'

Gostaria de imprimir agora as linhas desse arquivo, de preferência continue enviando este comando. Alguma idéia?

Sei que posso simplesmente remover awk '{print $10}' e awk -F ':' '{print $1}' , mas, por algum motivo, quando faço isso, não obtenho resultados, ao passo que, quando tento usar o comando postado acima, obtenho a lista de números.

    
por lloiacono 17.04.2018 / 08:32

1 resposta

2

Solução:

| xargs -I{} sed '{}q;d' /var/log/some.log

Veja Como obter a n-ésima linha de um arquivo

Comentário:

Você provavelmente poderia encurtar sua longa sequência de canais (incluindo a última etapa acima) escrevendo um comando sed , awk ou perl mais elaborado:

perl -lane 'print $F[9] if /01\/01/ and /some/ and $F[9]!~/200/' /var/log/some.log
    
por 18.04.2018 / 11:20

Tags