The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > UNIX for Dummies Frågor & Svar
.
google unix.com



UNIX for Dummies Frågor & Svar Om du inte är säker på var att skriva en UNIX eller Linux fråga efter det här. Alla UNIX-och Linux-nybörjare välkomna!

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
hur man kan dela upp en fil aarif UNIX for Dummies Frågor & Svar 2 03-01-2008 03:36
Dela filer med Csplit savitha UNIX for Dummies Frågor & Svar 7 12-01-2007 11:55
Delad fil mpang_ Shell-programmering och Skript 3 09-12-2006 09:37
Dela en fil Reza Nazarian UNIX for Dummies Frågor & Svar 1 08-09-2006 07:01
flera mönster uppdelad i perl umen Shell-programmering och Skript 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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 12-13-2007
madhunk madhunk is offline
Registered User
  
 

Join Date: Nov 2005
Inlägg: 91
Dela en fil med något mönster - Split, Csplit, awk

Jag har gått igenom alla trådar i forumet och provade ut olika saker. Jag försöker att dela upp en 3 GB-filen i flera filer. Vissa filer är ännu större än så.

Till exempel:

Kod:
split -l 3000000 filename.txt
Detta är mycket långsam och det delar upp filen med 3 miljoner poster i varje fil. Men jag skulle vilja ge hur många filer som en parameter och output den användardefinierade filnamn och inte xaa, xab och så vidare.

Jag är också försöker awk och jag vet att det kommer att vara mycket snabb och enkel. Jag läser forum och de är alla en delning av filer på ett visst mönster, och jag kräver inte något mönster.

Kan du ge mig dina synpunkter på detta ..
  #2 (permalänk)  
Old 12-13-2007
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Oorganiserad User
  
 

Join Date: Nov 2007
Plats: Nya Zeeland
Inlägg: 922
Jag trodde dd skulle vara ett lämpligare val för detta?
  #3 (permalänk)  
Old 12-14-2007
madhunk madhunk is offline
Registered User
  
 

Join Date: Nov 2005
Inlägg: 91
Om du kan rekommendera ett snabbt sätt vilja awk, som skulle vara mycket uppskattat. Uppdelningen som tar upp mycket tid.
  #4 (permalänk)  
Old 12-14-2007
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.762
Om disk i / o inte gör split "för långsam" och sedan försöka awk. Men du bör tänka på att en stor I / O-begäran kö längden på att filsystemet är en trolig kandidat för långsam delning, i stället för split är en dålig artist.
awk version av Rastiväli:
Kod:
awk ' {
          if(NR<300000) { print $0 > "smallfile1"}
          if (NR>300000 && NR < 600000) { print $0 > "smallfile2" }
          if (NR>60000) {print $0 > "smallfile3" }
       }'  bigfile
  #5 (permalänk)  
Old 12-14-2007
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.873
En annan metod - du kan skicka flera argument och styra filnamn:

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

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

Använd nawk eller / usr/xpg4/bin/awk på Solaris.

Senast redigerad av radoulov; 12-14-2007 vid 08:32..
  #6 (permalänk)  
Old 12-17-2007
madhunk madhunk is offline
Registered User
  
 

Join Date: Nov 2005
Inlägg: 91
Tack Radoulov ... När jag körde din kod är det självklart fil1, fil2 eller fil3 inte hittas. Det verkar som koden utgår från att de är indatafilerna. Men Jim kod fungerar bra.

Hela miljön är i Windows. Men jag använder MKS Verktygssats och åberopar bash shell att verkställa awk. Aldrig arbetat med Windows innan och det är inte riktigt trevligt ..
  #7 (permalänk)  
Old 12-17-2007
drl's Avatar
varselljus drl is offline Forum Advisor  
Registered User
  
 

Join Date: april 2007
Ort: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Inlägg: 711
Hej, Jim McNamara.
Citat:
Ursprungligen postat av print "$ rader rader läsa. \ n"; View Post
Om disk i / o inte gör split "för långsam" och sedan försöka awk. Men du bör tänka på att en stor I / O-begäran kö längden på att filsystemet är en trolig kandidat för långsam delning, i stället för split är en dålig artist.
awk version av Rastiväli:
Kod:
awk ' {
          if(NR<300000) { print $0 > "smallfile1"}
          if (NR>300000 && NR < 600000) { print $0 > "smallfile2" }
          if (NR>60000) {print $0 > "smallfile3" }
       }'  bigfile
Antalet i rött verkar saknas en noll, vilket tyder på att den sista delen av fil efter 60k (inte 600K) hamnar på smallfile3 ... Skål, varselljus
Closed Thread

Komihåglista

Taggar
linux

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 12:30.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0