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
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

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-11-2007
vukkusila vukkusila is offline
Registered User
  
 

Join Date: Aug 2007
Inlägg: 6
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
  #2 (permalänk)  
Old 12-12-2007
user_prady user_prady is offline
Registered User
  
 

Join Date: Sep 2007
Inlägg: 163
Citat:
Ursprungligen postat av vukkusila View Post
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
Om jag inte ditt fel varje post i fil1 och fil2 verkar vara unik data. Jag påpeka det sista tecknet i dina filer.

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
  #3 (permalänk)  
Old 12-12-2007
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
  
 

Join Date: februari 2006
Ort: Almería, Spanien
Inlägg: 393
Prova något liknande:
Kod:
 sort -t'|' -k 1,1 File1 File2|awk -F\| 'BEGIN{i=0}{
                              pat=$1"|"$2
                              ocurrences[pat]++
                              line[i]=$0
                              i++
       }
       END {
          for (j=0;j<i;j++)
              {
              pat=substr(line[j],1,5)
              if (ocurrences[pat]>1)
                print line[j]>>"File3"
              else
                print line[j]>>"File4"
              }
      }'
  #4 (permalänk)  
Old 12-12-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2859
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="|"
Använd nawk eller / usr/xpg4/bin/awk på Solaris.

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..
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 11:23.


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