![]() |
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.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
| Ta bort duplikat poster med Sortering | svenkatareddy | Shell-programmering och Skript | 19 | 06-11-2008 02:10 |
| Ta bort duplikat poster med Sortering | svenkatareddy | Sun Solaris | 2 | 02-28-2008 08:38 |
| Duplicera poster från Oracle till textfil. | shilendrajadon | UNIX för avancerade & Expertanvändare | 1 | 01-10-2008 11:21 |
| Ta bort dubbletter av poster från en tilde avgränsad fil | irshadm | Shell-programmering och Skript | 5 | 12-06-2007 05:36 |
| Ta bort dubbletter av poster från fil | Nysif Steve | UNIX for Dummies Frågor & Svar | 18 | 09-09-2007 08:57 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Ta bort alla instanser för dubbla poster från fil
Hej experter,
Jag är nybörjare på skript. Jag har ett krav enligt nedan. Fil1: A | 123 | NAME1 A | 123 | NAME2 B | 123 | NAME3 Fil2: C | 123 | NAME4 C | 123 | NAME5 D | 123 | NAME6 1) Jag har sammanfoga 2 båda filerna. 2) måste göra en sorts (nyckel fält är första och andra fält) 3) Ta bort alla förekomster av dubbla poster från den sammanslagna filen och skriva skriva alla dessa dubbletter i en fil. 4) övriga uppgifter som är unika i den ursprungliga källfilerna, måste skrivas in i en annan fil outfiles: fil3: A | 123 | NAME1 A | 123 | NAME2 C | 123 | NAME4 C | 123 | NAME5 File4: B | 123 | NAME3 D | 123 | NAME6 Behag hjälpa mig med den lösning som jag är i verkliga brådskande. Uppskattar din hjälp. Tack |
|
||||
|
Citat:
Så om alla uppgifter är unika alla handlingar ska gå till File4 .. Är n't det? Förklara tydligare, så att du ll få ett snabbt svar från detta forum. Tro mig här i detta forum verkligen lysande och experter här för att hjälpa dig när som helst .. exklusive mig .. ![]() Skål user_prady |
|
|||||
|
Annan sort / Awk lösning
(Om dina filer inte redan sorteras som de prover du posted): Kod:
sort -t\| -k1,2 file1 file2|awk '{
x[$1,$2]++
y[NR] = $0
} END {
for (i = 1; i <= NR; i++)
print y[i] > ((x[substr(y[i],1,5)] > 1) ? "file3" : "file4")
}' SUBSEP="|" FS="|"
PS variabel kolumnbredd: du bör inte använda substr, men split till exempel: Kod:
sort -t\| -k1,2 file1 file2|awk '{
x[$1,$2]++
y[NR] = $0
} END {
for (i = 1; i <= NR; i++)
{
tmp = y[i]
split(tmp,z)
print tmp > ((x[z[1],z[2]] > 1) ? "file3" : "file4")
}
}' SUBSEP="|" FS="|"
Senast redigerad av radoulov; 12-12-2007 at 08:16.. |