Buscar todas as linhas até uma data usando sed, exceto pela última linha correspondente

2

Eu preciso buscar linhas de um arquivo usando sed, mas não quero que a última linha seja impressa. O que devo adicionar neste comando para fazer isso?

sed "/$START_DATE/q" user.log>test2.log

    
por Hamas Rizwan 01.08.2018 / 20:21

2 respostas

1

Se parecer mais intuitivo, você pode adicionar um segundo sed ao pipeline cujo único trabalho é excluir a última linha (correspondida pelo anterior / existente sed ):

sed "/$START_DATE/q" user.log | sed '$d' > test2.log
    
por 01.08.2018 / 20:50
4

Se você tem o GNU sed, você pode substituir q por Q :

Q [exit-code]

This command accepts only one address.

This command is the same as q, but will not print the contents of pattern space.

Então sed "/$START_DATE/Q" user.log>test2.log

Caso contrário, você pode desativar a impressão padrão e imprimir as linhas antes de sair explicitamente:

sed -n '/Line 10/q; p'
    
por 01.08.2018 / 20:32

Tags