Exclui dezesseis milhões de linhas de um arquivo XML do Windows Unicode 24 Gig de dezoito milhões de linhas?

2

Alguma idéia de como excluir 16 milhões de linhas de um arquivo de 24 GIG da linha 3 em diante. As ferramentas tradicionais de texto da linha de comando do UNIX, recompiladas para janelas, não lidam com o aspecto Unicode do arquivo nem com o tamanho do arquivo. Talvez no modo de transmissão > "Gato" falha em torno de 4 GIG.

Eu olhei para o EmEditor. Ele tem a capacidade de mover e marcar linhas específicas, mas não parece ter um comando ou macro para selecionar todas as linhas entre dois marcadores. Paginar para baixo enquanto pressiona a tecla shift pode levar uma eternidade para selecionar milhões de linhas.

    
por kingchris 23.04.2014 / 16:47

2 respostas

1

Como alguém disse (ainda não posso deixar um comentário), use uma ferramenta XML para o trabalho. Saxon-HE ( link ) é provavelmente sua melhor aposta - dependendo da estrutura do arquivo XML, você deve ser capaz de usar um XPath curto expressão como esta:

//*[count(ancestor::*) lt 3]

na linha de comando (usando o parâmetro -qs:) para mostrar apenas a parte da árvore em que você está interessado.

edite: mantendo-se dentro do mundo XML, você também terá o manejo de segurança de saber que o Unicode é tratado corretamente e, portanto, você não arriscará perder nenhum dado.

    
por 23.04.2014 / 19:25
0

Se você puder descobrir o número de linhas que deseja desde o início e o fim do arquivo, você pode usar algo nos mesmos moldes (substitua 999 pelo número desejado):

head -n 999 infile.xml > outfile.xml

tail -n 999 infile.xml >> outfile.xml
    
por 23.04.2014 / 19:19