Imprimir todas as linhas completas de arquivo

3

Como imprimo todas as linhas completas de um arquivo? Por "completo" quero dizer apenas os que terminam com o caractere de nova linha. grep trata EOF como delimitador de linha, por isso, grep '^.*$' file imprimirá a última linha mesmo que não haja nova linha no final do arquivo.

O problema todo vem da análise de arquivos de log: precisamos ter certeza de que a última entrada foi completamente registrada - ou seja, termina com nova linha.

    
por Mirek 08.12.2017 / 12:48

2 respostas

7

Uma abordagem simples é usar perl :

perl -ne '/\n/ && print' file

Se você quiser apenas verificar se o último caractere de um arquivo é uma nova linha, faça:

tail -c1 file | grep -q '^$' && echo yes || echo no

Mas a opção -c não é POSIX, portanto não é portátil.

    
por 08.12.2017 / 12:54
1

read (pelo menos no shell Bourne) requer que uma linha seja terminada com nova linha:

# /bin/sh -c 'echo -e "foo\nbar\c" | while read line; do echo $line; done'
foo
#

Então você poderia usar algo como:

#!/bin/sh
while read line
    do echo $line
done < logfile.txt
    
por 08.12.2017 / 17:34