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 > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Uppdelning av filen i 2 på viss plats bygger på Textpattern borgeh Shell-programmering och Skript 0 09-24-2007 08:02
infoga fil 1 på en viss plats för filen 2 JCR Shell-programmering och Skript 1 02-01-2007 11:48
hur du ändrar stor fil i UNIX balireddy_77 Shell-programmering och Skript 3 12-14-2006 07:40
Hjälp för att redigera en stor fil jxh461 Shell-programmering och Skript 8 05-19-2003 05:38
hur man redigerar stora filer använder vi nazri UNIX for Dummies Frågor & Svar 3 06-15-2001 10:18

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 08-29-2007
mvijayv mvijayv is offline
Registered User
  
 

Join Date: Jan 2007
Inlägg: 16
Redigera en stor fil på plats

Folk,
Jag har en fil med 50 miljoner poster med 2 kolumner. Jag måste göra det nedan:
1. Generera en del slumptal av en fast längd.
2. Ersätt den andra kolumnen i slumpvis valda rader med slumptal.

Jag försökte med hjälp av lite perl att generera slumptal och sed att ersätta den manuellt. Problemet jag ser är att den genererar en output med ersättas titelinformation med alla 50 miljoner poster. Jag vill helst inte ha utdata genereras för varje rad uppdateringen. Jag skulle vilja få produktionen när alla uppdateringar är klar ....
Jag undrade om jag kunde ändra filen på plats med hjälp sed ... Jag gjorde försök att leta efter detta på plats alternativet .. men jag dont har GNU version av SED ...

Alla tankar ...?

Tack
V
  #2 (permalänk)  
Old 08-30-2007
Ilan ilan is offline
Registered User
  
 

Join Date: Jul 2007
Inlägg: 101
Här är de första flytta på dina krav:
>> 1. Generera en del slumptal av en fast längd.

i \u003d 00000000
echo $ RANDOM $ i | cut-c 1-8

ovan tjänar till att generera slumptal för mer än 50 miljoner poster, återigen osäker på hur ofta ett antal upprepar!

inte klart om andra krav. vara specifika snälla ...

-Ilan
  #3 (permalänk)  
Old 08-30-2007
mvijayv mvijayv is offline
Registered User
  
 

Join Date: Jan 2007
Inlägg: 16
Hej Ilan,
Tack för att du tar upp detta ... Jag har den första kommit fram till ... Jag kan generera ett slumptal hjälp av en liten perl skript som jag hämtat från nätet ... men jag har ett problem med den andra delen ... Jag ska försöka beskriva det bättre.

Jag har 50 miljoner poster med 2 kolumner. Både kolumner förekommer i alla register.

Steg 1: Skapa ett slumpmässigt värde (detta är den del jag räknat ut ovan)
Steg 2: Leta upp en slumpmässig titelinformation bland de 50 miljoner
Steg 3: Sätt värdet i andra kolumnen med det värde som genereras i steg 1.
Step4: Gå tillbaka till Steg 1, skapa ett nytt värde, leta efter en annan slumpmässigt spela in, ersätta det med detta värde och så vidare i ungefär en miljon gånger.

Jag vill kunna göra detta på plats eftersom varje gång jag ut ett register med hjälp av awk ger det hela 50 miljoner inklusive den förändringen som produktion och jag har omdirigera produktion till en annan fil, döp om den till det ursprungliga och börja om igen för nästa iteration.
Vad jag behöver är ett sätt att redigera filen finns i en slinga identifiera slumpmässiga poster och ändra andra kolumnen en miljon gånger.


Den höga krav:
Eftersom en fil med 50 miljoner poster, jag har för att skapa en fil som har 50 miljoner poster, men har 1 miljoner poster vars andra kolumnen varierar från att i första akten. Kanske finns det ett enklare sätt att göra detta ... Men jag är stumped just nu ....


Tack,
V
  #4 (permalänk)  
Old 08-31-2007
ahmedwaseem2000 ahmedwaseem2000 is offline
Registered User
  
 

Join Date: Aug 2005
Ort: Bangalore
Inlägg: 219
Skulle ni kunna skicka några prov uppgifter om in-och utgångar, så att vi kan vara mer tydlig om kravet.
  #5 (permalänk)  
Old 09-03-2007
mvijayv mvijayv is offline
Registered User
  
 

Join Date: Jan 2007
Inlägg: 16
12123 | 12345678
42142 | 23442253
52315 | 32250205
....
....
...
....
....
ca 50 miljoner

Nu vill jag slumpmässigt välja poster och ändra värdet på den andra kolumnen

Till exempel om jag väljer det andra titelinformation slumpmässigt. Jag kommer att förändra den 2: a kolumnen till ett slumpmässigt värde:

12123 | 12345678
42142 | 53988989
52315 | 32250205
....
....
...
....
....

samma operation 1 miljon gånger varje gång välja en annan post på måfå.
  #6 (permalänk)  
Old 09-03-2007
fazliturk fazliturk is offline
Registered User
  
 

Join Date: Aug 2007
Inlägg: 45
Jag försökte följande kod i aix i ksh
koden är lång men det finns inget medan etc.
Låt säga att den ursprungliga filen origfile

steg 1.

sed s /"|"/" "/ g origfile> tempfile

/ ** Om du inte har sed måste du ändra "|" med tomt med något * /
/ efter den ursprungliga filen ser ut så här 12123 12345678 * /

grep-n "^ $" tempfile> origfile, rm tempfile

/ * efter den ursprungliga filen ser ut så här;
1 12123 12345678
2 42142 53988989

steg 2.
/ ** producera 1 miljon slumptal och spara till RandNumbersFile ** /

steg 3.
/ ** producera 1 miljon slumptal och spara till RandRecordsFile ** /
sortera-u RandRecordsFile> tempfile
mv tempfile RandRecordsFile

/ * Du kan producera 1 miljon nummer men om du sorterar det unically det kan vara mindre än 1 miljon. Du måste vara säker på att varje rad i detta ärende är unikt ovanstående kommando arrangerar denna * /

låt "NeededLine \u003d 1000000 -" wc-l RandRecordsFile | awk '(print $ 1)' ""

/ * här raden visar hur många nya rekord behöver du efter typ * /

counter \u003d 0
medan [$ counter-lt $ NeededLine]
göra
/ ** producera slumpmässigt RandomRecord (betyder slumptal). jag menar måste du lägga din kod här ** /
grep $ RandomRecord RandomRecordsFile> / dev / null
om [$? -ne 0]
sedan
echo $ RandomRecord>> RandomRecordsFile
låt "counter \u003d $ counter +1"
fi
gjord
sortera-u RandomRecordsFile> tempfile
klistra tempfile RandNumbersFile> RandomRecordsFile
rm tempfile

/ ** Efter din RandomRecordsFile ser ut så här;
1 12345678
27 53988989
första en står för titelinformation num och andra rundom fältet (orig andra fält) ** /

gå-v1 origfile RandomRecordsFile> tempfile / ** omatchade rader ** /
gå-o 1.1,1.2,2.2 origfile RandomRecordsFile>> tempfile / * matchade rader * /
sortera-u tempfile> origfile / * sortera på field1 * /
/ ** om du behöver lägga till dessa rader
cut-f2, f3 origfile> tempfile
sed s / ""/"|"/ g tempfile> origfile ** /
rm tempfile

så koden;
/ ** producera 1 miljon slumptal och spara till RandNumbersFile ** /
/ ** producera 1 miljon slumptal och spara till RandRecordsFile ** /

cp yourfile origfile
sed s /"|"/" "/ g origfile> tempfile
grep-n "^ $" tempfile> origfile
sortera-u RandRecordsFile> tempfile
mv tempfile RandRecordsFile
låt "NeededLine \u003d 1000000 -" wc-l RandRecordsFile | awk '(print $ 1)' ""
medan [$ counter-lt $ NeededLine]
göra
/ ** producera slumpmässigt RandomRecord (betyder slumptal). jag menar måste du lägga din kod här ** /
grep $ RandomRecord RandomRecordsFile> / dev / null
om [$? -ne 0]
sedan
echo $ RandomRecord>> RandomRecordsFile
låt "counter \u003d $ counter +1"
fi
gjord
sortera-u RandomRecordsFile> tempfile
klistra tempfile RandNumbersFile> RandomRecordsFile
gå-v1 origfile RandomRecordsFile> tempfile
gå-o 1.1,1.2,2.2 origfile RandomRecordsFile
sortera-u tempfile> origfile
rm tempfile

Senast redigerad av fazliturk; 09-03-2007 vid 09:41..
Closed Thread

Komihåglista

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 02:39.


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