Usando split sem quebrar a codificação

2

Eu preciso dividir um arquivo. Eu costumo usar split , mas desta vez eu preciso ter o arquivo dividido do mesmo tipo de codificação do original. Eu tenho o original:

eianni@ianni-desktop:~/Desktop$ file FCAna.txt 
FCAna.txt: ISO-8859 text, with CRLF line terminators

enquanto os novos são:

eianni@ianni-desktop:~/Desktop$ file xaa
xaa: ISO-8859 text, with CRLF line terminators
eianni@ianni-desktop:~/Desktop$ file xab
xab: Non-ISO extended-ASCII text, with CRLF line terminators

o segundo não está bem. Como posso resolver isso? O comando executado é

split --lines=1588793 FCAna.txt
    
por dierre 13.03.2012 / 10:16

2 respostas

4

Acho que isso pode estar relacionado à maneira como o file funciona. Lendo a partir do manpage:

ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets (such as those used on Macintosh and IBM PC systems), UTF-8-encoded Unicode, UTF-16-encoded Unicode, and EBCDIC character sets can be distinguished by the different ranges and sequences of bytes that constitute printable text in each set.

Minha interpretação dessa declaração é que a capacidade de file de determinar a codificação usada é baseada na existência de determinados caracteres disponíveis no arquivo de texto que tornam óbvia a codificação. Assim, para UTF, o tamanho dos bytes ou a existência de uma lista de materiais poderia ser usado. Seu arquivo de texto original pode ter usado caracteres que só poderiam ser codificados em um conjunto de caracteres ASCII estendido (talvez um símbolo de libra (£)) e, portanto, file estava determinando que era um arquivo ISO 8859. Mas agora que o arquivo está dividido, esse símbolo aparece apenas no primeiro arquivo e não no segundo. Você deve ser capaz de testar essa hipótese pesquisando no texto por caracteres "estendidos" e dividindo em pontos diferentes.

Como teste, fiz o seguinte:

[root@blah ~]# echo "this is a test of text encoding" > test_encoding.txt
[root@blah ~]# file test_encoding.txt
test_encoding.txt: ASCII text
[root@blah ~]# echo "£" >> test_encoding.txt
[root@blah ~]# file test_encoding.txt
test_encoding.txt: ISO-8859 text
[root@blah ~]#

Existe algum motivo para você precisar que as codificações de arquivo relatadas por file correspondam?

    
por 13.03.2012 / 13:29
0

Esta é uma questão de terminação de linha. Talvez diga a divisão para quebrar por linha com a opção -l ?

    
por 13.03.2012 / 10:45

Tags