Contando novas linhas ou retornos de carro, mas não ambos

1

Se eu fizer isso em um arquivo Mac, obtenho o número correto de linhas, mas recebo o dobro das linhas em arquivos unix:

cat /path/to/file.txt | tr '\r' '\n' | wc -l

Se eu fizer isso em um arquivo unix, obtenho o número correto de linhas, mas zero linhas em um arquivo Mac:

cat /path/to/file.txt | wc -l

Como faço para obter o número correto de linhas em um único comando, independentemente da origem do sistema de arquivos (Linux, Mac, Windows)?

    
por EcomEvo 30.01.2018 / 04:55

1 resposta

0

Eu sugeriria inspecionar os arquivos que você está manipulando. qual estilo de feed de linha usado neles.

$ od -t x1z

imprime o conteúdo do arquivo em bytes hexadecimais e "ASCII", procura bytes 0A e 0D.

Eu tenho uma função bash que é definida em ~ / .profile / ou ~ / .bashrc para ajudar com esse tipo de problema:

function od-crlf {
#DOC echo "od-crlf FILE - displays file contents in HEX w CR+LF chars emphasized"

  od -Ax -t x1z -w32 $@ \
  | sed -re 's/(0a)/\x1b[44m\x1b[m/g;s/(0d)/\x1b[45m\x1b[m/g'
}
    
por 30.01.2018 / 15:28