![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
| Uppdelning fil baserat på antal rader | wahi80 | Shell-programmering och Skript | 2 | 06-03-2008 10:38 |
| Uppdelning en fil baserat på uppgifter i ett annat ärende | er_ashu | Shell-programmering och Skript | 2 | 05-12-2008 05:34 |
| dela upp en post och lägga till en post i en fil | rsolap | Shell-programmering och Skript | 1 | 08-13-2007 02:58 |
| delning filer baserade på text i filen | matrix1067 | Shell-programmering och Skript | 1 | 01-30-2006 08:45 |
| Uppdelning en fil baserat på vissa villkor och namnge dem | srivsn | Shell-programmering och Skript | 1 | 12-07-2005 11:27 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Uppdelning en fil baserat på titelinformation synd en annan fil
Alla,
Vi får en fil med ett stort antal poster (poster kan variera) och vi måste dela upp det i två akter baseras på en annan fil. t.ex. Fil1: UHDR 2008112 "25.187", "00000022", "00" ,21-APR-1991, "", "D", -000.000.519, 0000000000, "C",, 000,000,000, +000000000,000000000, "2", "" ,21-APR-1991 "8Y3H4", "0000004H", "00" ,16-APR-1992, "", "H", -001.621.119, 0000000000 "C",, 000,000,000, +000000000,000000000, "2", "" ,21-APR-1991 "95Y8U", "02100971", "00" ,03-MAR-1991, "", "H", -000.004.499, 0000000000, "",, 000,000,000, +000000000,000000000, "2", "USA" ,21-APR-1991 "24.567", "02100973", "00" ,26-SEP-1991, "", "H", -000.000.362, 0000000000, "",, 000,000,000, +000000000,000000000, "2", "USA" ,21-APR-1991 -- -- -- UTRL 00144700 Fil2: 2518720080512 2456720080512 1256720080512 8WE7820080512 8Y3H020080512 8Y3H220080512 8Y3H420080512 8Y3H620080512 -- -- -- -- Om de första 5 tecknen i filen 2 matchas med tecken 2-6 i fil1, bör skilja dessa register och omsätta dem i en annan fil och resten av posterna bör kopieras till en andra akt. Jag försökte klippa kommandot men eftersom fil1 är ganska stor, det tar mycket tid att sätta värden i en variabel och sedan jämföra det. Finns det något sätt som kan göra ovanstående uppgift ganska snabbt. Please help det behövs omgående. Tack i förskott. |
|
||||
|
Om din grep kan läsa mönster från en fil (som GNU grep), prova något sådant. Kod:
cut -c1-5 file2 >patterns grep -f patterns file1 >matches grep -f patterns -v file1 >nonmatches Det finns utrymme för förbättringar, så att de mönster alltid matcha i början av raden, etc. Du kan ersätta den första raden med något som Kod:
sed 's/^\(.....\).*/^"\1",/' file2 >patterns Detta lägger till dubbla citattecken runt söksträngen och lägger till ett kommatecken bakom sig och specialtecken "^" innan det, vilket innebär match först i början av raden. Senast redigerad av era; 05-13-2008 vid 04:28.. Orsak: Förklara ändrade mönster |
|
||||
|
Tack Franklin och ERA.
Franklin, Jag fpossible, kan du förklara wha tthe torsk EIS gör. Jag är en awk nybörjare och detta kommer att hjälpa mig att tolka saker bättre. Också, vad gör jag om jag inte vill ändra originalfilerna. Tack igen. |
|
||||
|
Kod:
awk 'NR==FNR{a[substr($0,1,5)];next}
Gets första 5 tecknen i den första filen i matrisen. Kod:
NF<3{next}
Ignorera linjer med mindre än 3 fält (den första och sista raden) Kod:
substr($1,2,5) in a {print > "file1";next}
Om 5 tecken efter citat i matris skriva till file1 .. Kod:
{print > "file2"}
... else print till fil2 De ursprungliga filerna bör inte ändras. Hälsningar Senast redigerad av Franklin52; 05-13-2008 at 02:03.. Orsak: språklig korrigering |
|
||||
|
Franklin, You rock. Men när jag använder den här: Kod:
awk 'NR==FNR{a[substr($0,1,5)];next}
NF<3{next}
substr($1,2,5) in a {print > "matched.txt";next}
{print > "notmatched.txt"}' file2 file1
Jag ser bara matched.txt fil men inte "notmatched.txt". Har jag missat något här? |