Como posso ver o que está na linha 149351 de um arquivo grande?

2

Estou tentando importar um arquivo de despejo MySQL grande e estou recebendo um erro consistente em uma determinada linha 149,351 (de 4207442). Eu gostaria de ver o que é essa linha.

A melhor maneira que encontrei para fazer isso é assim:

head -149351 dump.sql | tail

No entanto, isso é muito lento. Tentei carregar o arquivo em vi , mas não consegui lidar com um arquivo tão grande. Eu estou no Windows XP e tenho o cygwin.

    
por Jeremy French 08.05.2009 / 17:23

9 respostas

5
sed -n '149351p' dump.sql

pode ser ligeiramente mais rápido que combinações cabeça / cauda (mas talvez não). Vartec está correto; não há maneira mais rápida do que ler pelo menos as primeiras 149.351 linhas.

    
por 08.05.2009 / 20:44
4

Você pode ver a linha individual com o seguinte comando:

tail -n+<line number> <file>|head -n1

no seu caso: tail -n + 149351 dump.sql | head -n1

Esse comando descarta o arquivo iniciando no número de linha 149351 e usa o comando head para exibir apenas a primeira linha dos resultados finais.

    
por 08.05.2009 / 17:31
3

Eu recomendaria usar o comando split para dividir esse enorme despejo em partes mais gerenciáveis:

split -l20000 mysql.dump mysql.dump.

Irá criar arquivos com os nomes mysql.dump.aa, mysql.dump.ab, .... Cada arquivo conterá 20000 linhas - as ferramentas de edição devem ser capazes de lidar com esses pequenos arquivos facilmente!

Depois de corrigir o problema, recombine-os facilmente:

cat mysql.dump.* > mysql.dumptest

ou

cat mysql.dump.* | mysqlimportcommand
    
por 08.05.2009 / 17:29
2

Eu geralmente só ligo TextPad , mesmo em arquivos de 1GB.

Ctrl + G é o menu Ir para, no qual você pode escolher o número da linha.

    
por 08.05.2009 / 17:39
2

Se as linhas são de comprimentos variáveis, realmente não há um caminho mais rápido, então escaneie pelo primeiro 149351 (que é exatamente o que você faz com " head ").

    
por 08.05.2009 / 18:19
2

Surpreso, ninguém sugeriu:

grep -n 149351 dump.sql
    
por 29.08.2015 / 02:40
2

Desde suas janelas estou surpreso que ninguém sugeriu

get-content -readcount 0 | select-object-index 149350

    
por 29.08.2015 / 04:02
1

Certamente, no vi, você pode definir o número da linha usando:

:set number

e depois vá para a linha 149351 usando:

:149351

alternativamente, você pode iniciar o vi em um número de linha específico usando:

vi +36 blah

espero que ajude ...

    
por 08.05.2009 / 17:29
1

Abra-o com nano (com -w) e, quando abrir, clique em CTRL _ e digite o número da linha para ir.

    
por 08.05.2009 / 17:51

Tags