Eu testo o conteúdo de um conjunto de arquivos de dados se eles contêm pelo menos um de um conjunto de caracteres que consiste em caracteres imprimíveis e não imprimíveis.
Meu último problema é detectar se o arquivo contém um feed de linha. Meu GNU grep 3.0 afirma que cada entrada contém um LF... Por que isso?
echo -n "test" | grep -UF -e $'\x0a'
Alguma ideia? Suspeito de alguma interferência implícita de EOL/EOF.
grep é orientado a linha - se a entrada não terminar com uma nova linha, ele ainda considera o texto após a última nova linha (ou início do arquivo) como uma linha.
Programas orientados a linha são inadequados para o processamento direto de arquivos binários - eles geralmente terão casos patológicos se um arquivo binário tiver uma "linha" particularmente longa.
Em vez disso, considere algo como uma combinação de
tr
ecmp
:Este método também tem a vantagem de precisar ler a entrada apenas até o primeiro caractere de nova linha (mais buffer).
Da especificação POSIX de
grep
:Para verificar se a entrada contém um caractere de alimentação de linha, que é o mesmo que um caractere de nova linha no Unix, você pode contar o número de linhas com
wc -l
:Ou, se você tiver uma string: