The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX para Dummies Perguntas & Respostas
.
google unix.com



UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos!

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
como dividir um arquivo aarif UNIX para Dummies Perguntas & Respostas 2 03-01-2008 03:36
Dividir arquivos usando Csplit savitha UNIX para Dummies Perguntas & Respostas 7 12-01-2007 11:55
Split File mpang_ Programação Shell Script e 3 09-12-2006 09:37
Dividir um arquivo Reza Nazarian UNIX para Dummies Perguntas & Respostas 1 08-09-2006 07:01
múltipla padrão dividido em perl umen Programação Shell Script e 3 08-01-2006 03:43

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 12-13-2007
madhunk madhunk is offline
Usuário
  
 

Join Date: Nov 2005
Lugares: 91
Dividir um arquivo com nenhum padrão - Split, Csplit, Awk

Tenho passado por todas as threads no fórum e testou para fora coisas diferentes. Estou tentando dividir 3GB um arquivo em vários arquivos. Alguns arquivos são ainda maiores do que isso.

Por exemplo:

Código:
split -l 3000000 filename.txt
Isto é muito lento e ele divide o arquivo com 3 milhões de registros em cada arquivo. Mas gostaria de dar o número de arquivos como um parâmetro de saída e os nomes definidos pelo usuário e não xaa, xab, e assim por diante.

Também estou tentando awk e sei que vai ser muito rápido e simples. Eu li o fórum e eles estão todos dividir os arquivos em um padrão específico e que não requerem qualquer padrão.

Por favor, me dê sua opinião sobre este ..
  #2 (permalink)  
Old 12-13-2007
Smiling Dragon's Avatar
Sorridente Dragão Smiling Dragon is offline Forum Advisor  
Desorganizada Usuário
  
 

Join Date: Nov 2007
Localização: Nova Zelândia
Lugares: 922
Eu teria pensado dd seria uma escolha mais adequada para isso?
  #3 (permalink)  
Old 12-14-2007
madhunk madhunk is offline
Usuário
  
 

Join Date: Nov 2005
Lugares: 91
Se você pode recomendar uma maneira rápida como awk, que seria muito apreciado. A divisão, tendo-se muito tempo.
  #4 (permalink)  
Old 12-14-2007
jim McNAMARA jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Localização: NM
Mensagens: 5.763
Se disco I / O que não é dividido "demasiado lento" tente awk. Mas você deve considerar que uma grande I / O pedido fila comprimento em que sistema de ficheiros é um provável candidato à lenta separação, em vez de dividir a ser um mau desempenho.
awk versão de split:
Código:
awk ' {
          if(NR<300000) { print $0 > "smallfile1"}
          if (NR>300000 && NR < 600000) { print $0 > "smallfile2" }
          if (NR>60000) {print $0 > "smallfile3" }
       }'  bigfile
  #5 (permalink)  
Old 12-14-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.875
Outra abordagem - você pode passar vários argumentos e controlar os nomes de arquivos:

Código:
awk 'FNR == 1 { c = 1 }
{ close(FILENAME c-1)
	print > (FILENAME (!(FNR%30000000) ? ++c : c))
}'  file_1 file_2 ... file_n
ou:

Código:
awk 'FNR == 1 { c = 1 }
	      { print > (FILENAME c) }
!FNR%30000000 { close(FILENAME c); ++c }
' file_1 file_2 ... file_n

Utilize nawk / ou usr/xpg4/bin/awk no Solaris.

Última edição por radoulov; em 12/14/2007 08:32..
  #6 (permalink)  
Old 12-17-2007
madhunk madhunk is offline
Usuário
  
 

Join Date: Nov 2005
Lugares: 91
Obrigado Radoulov ... Quando eu corria o seu código, ele está dizendo ficheiro1, ficheiro2 ou ficheiro3 não é encontrado. Parece que o código é supondo que estes são os ficheiros de entrada. No entanto, Jim's código está funcionando bem.

Todo o ambiente é em Windows. Mas estou usando MKS Tool Kit e invocando a executar comandos bash awk. Nunca trabalhei em Windows antes e não é muito agradável ..
  #7 (permalink)  
Old 12-17-2007
drl's Avatar
DRL drl is offline Forum Advisor  
Usuário
  
 

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 711
Oi, Jim McNAMARA.
Citação:
Originally Posted by print "$ linhas linhas ler. \ n"; View Post
Se disco I / O que não é dividido "demasiado lento" tente awk. Mas você deve considerar que uma grande I / O pedido fila comprimento em que sistema de ficheiros é um provável candidato à lenta separação, em vez de dividir a ser um mau desempenho.
awk versão de split:
Código:
awk ' {
          if(NR<300000) { print $0 > "smallfile1"}
          if (NR>300000 && NR < 600000) { print $0 > "smallfile2" }
          if (NR>60000) {print $0 > "smallfile3" }
       }'  bigfile
O número em vermelho parece estar faltando um zero, sugerindo que a última parte do arquivo para além 60K (não 600K) acaba em smallfile3 ... cheers, DRL
Closed Thread

Marcadores

Tags
linux

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 04:41.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0