The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Hoe verwijder dubbele records met de soort svenkatareddy Programmeren en Shell Scripting 19 06-11-2008 03:10 PM
Hoe verwijder dubbele records met de soort svenkatareddy SUN Solaris 2 02-28-2008 08:38
Dubbele records uit orakel aan tekstbestand. shilendrajadon UNIX for Advanced & Expert Gebruikers 1 01-10-2008 11:21
Dubbele records verwijderen uit een tilde bestand irshadm Programmeren en Shell Scripting 5 12-06-2007 05:36
Verwijder Dubbele lijnen uit bestand Nysif Steve UNIX voor Dummies Questions & Answers 18 09-09-2007 09: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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 12-11-2007
vukkusila vukkusila is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posten: 6
Verwijder alle exemplaren van dubbele records uit het bestand

Hallo deskundigen,
Ik ben nieuw voor scripts. Ik heb een eis zoals hieronder.

Bestand1:

A | 123 | NAAM1
A | 123 | NAAM2
B | 123 | NAME3

Bestand2:

C | 123 | NAME4
C | 123 | NAME5
D | 123 | NAME6

1) Ik heb 2 samenvoegen zowel de bestanden.
2) hoeft te doen, een soort (sleutel velden zijn eerste en tweede veld)
3) Verwijder alle gevallen van dubbele records uit de samengevoegde bestand en schrijf schrijf al deze dubbele gevallen in een dossier.
4) rest van de records die uniek zijn in de originele bron-bestanden, moet worden geschreven in een ander bestand

outfiles:

bestand3:
A | 123 | NAAM1
A | 123 | NAAM2
C | 123 | NAME4
C | 123 | NAME5

File4:

B | 123 | NAME3
D | 123 | NAME6

Please help me met de oplossing zoals ik ben echt dringend. Appreciate your help.

Bedankt
  #2 (permalink)  
Old 12-12-2007
user_prady user_prady is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2007
Posts: 163
Citaat:
Oorspronkelijk geplaatst door vukkusila View Post
Hallo deskundigen,
Ik ben nieuw voor scripts. Ik heb een eis zoals hieronder.

Bestand1:

A | 123 | NAAM1
A | 123 | NAAM2
B | 123 | NAME3

Bestand2:

C | 123 | NAME4
C | 123 | NAME5
D | 123 | NAME6

1) Ik heb 2 samenvoegen zowel de bestanden.
2) hoeft te doen, een soort (sleutel velden zijn eerste en tweede veld)
3) Verwijder alle gevallen van dubbele records uit de samengevoegde bestand en schrijf schrijf al deze dubbele gevallen in een dossier.
4) rest van de records die uniek zijn in de originele bron-bestanden, moet worden geschreven in een ander bestand

outfiles:

bestand3:
A | 123 | NAAM1
A | 123 | NAAM2
C | 123 | NAME4
C | 123 | NAME5

File4:

B | 123 | NAME3
D | 123 | NAME6

Please help me met de oplossing zoals ik ben echt dringend. Appreciate your help.

Bedankt
Als ik niet verkeerd je elke record in file1 en file2 lijkt te zijn unieke gegevens. Ik ben te wijzen op de laatste teken van uw bestanden.

Dus als alle gegevens zijn uniek alle records zou naar File4 .. Is n't it?

Leg duidelijker, zodat u ll krijgt een snel antwoord van dit forum.
Geloof me hier in dit forum werkelijk briljant en experts hier om u te helpen op elk moment ..

uitzondering van me ..

Sante
user_prady
  #3 (permalink)  
Old 12-12-2007
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
  
 

Join Date: Feb 2006
Locatie: Almería, Spanje
Posts: 393
Probeer iets als:
Code:
 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 (permalink)  
Old 12-12-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.910
Een ander soort / Awk oplossing
(indien uw bestanden niet al gesorteerd als de monsters die je posted):

Code:
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="|"
Gebruik nawk of / usr/xpg4/bin/awk op Solaris.

PS Voor de variabele kolom breedte: je niet moet gebruiken substr, maar split bijvoorbeeld:

Code:
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="|"

Laatst bewerkt door radoulov; op 12-12-2007 08:16..
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 09:59 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0