The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Wie entfernt man doppelte Datensätze mit der Art svenkatareddy Shell Programmierung und Scripting 19 06-11-2008 03:10 PM
Wie entfernt man doppelte Datensätze mit der Art svenkatareddy SUN Solaris 2 02-28-2008 08:38 AM
Doppelte Datensätze aus Oracle-Text-Datei. shilendrajadon UNIX für Fortgeschrittene und Experten 1 01-10-2008 11:21 AM
Löschen Sie doppelte Datensätze aus einer Tilde Datei irshadm Shell Programmierung und Scripting 5 12-06-2007 05:36 AM
Entfernen von doppelten Zeilen aus Datei Nysif Steve UNIX for Dummies Questions & Answers 18 09-09-2007 09:57 AM

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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 12-11-2007
vukkusila vukkusila is offline
Registrierte Nutzer
  
 

Join Date: Aug 2007
Beiträge: 6
Entfernen Sie alle Instanzen der doppelte Datensätze aus der Datei

Hi Experten,
Ich bin neu in Scripting. Ich habe eine Verpflichtung wie folgt.

Datei1:

A | 123 | NAME1
A | 123 | NAME2
B | 123 | Name3

Datei2:

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

1) Ich habe 2 Zusammenführen der beiden Dateien.
2) Notwendigkeit zu tun, eine Art (Schlüsselfelder sind erster und zweiter Bereich)
3) Entfernen Sie alle Instanzen der doppelte Datensätze aus der fusionierten Datei schreiben und alle diese doppelte Instanzen in einer Datei.
4) Rest der Datensätze, die einzigartig in der Original-Source-Dateien, muss geschrieben werden, in einer anderen Datei

outfiles:

datei3:
A | 123 | NAME1
A | 123 | NAME2
C | 123 | NAME4
C | 123 | NAME5

File4:

B | 123 | Name3
D | 123 | NAME6

Bitte helfen Sie mir mit der Lösung, wie ich bin im realen dringend. Danken Ihnen für Ihre Unterstützung.

Danke
  #2 (permalink)  
Old 12-12-2007
user_prady user_prady is offline
Registrierte Nutzer
  
 

Join Date: Sep 2007
Beiträge: 163
Zitat:
Zitat von vukkusila View Post
Hi Experten,
Ich bin neu in Scripting. Ich habe eine Verpflichtung wie folgt.

Datei1:

A | 123 | NAME1
A | 123 | NAME2
B | 123 | Name3

Datei2:

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

1) Ich habe 2 Zusammenführen der beiden Dateien.
2) Notwendigkeit zu tun, eine Art (Schlüsselfelder sind erster und zweiter Bereich)
3) Entfernen Sie alle Instanzen der doppelte Datensätze aus der fusionierten Datei schreiben und alle diese doppelte Instanzen in einer Datei.
4) Rest der Datensätze, die einzigartig in der Original-Source-Dateien, muss geschrieben werden, in einer anderen Datei

outfiles:

datei3:
A | 123 | NAME1
A | 123 | NAME2
C | 123 | NAME4
C | 123 | NAME5

File4:

B | 123 | Name3
D | 123 | NAME6

Bitte helfen Sie mir mit der Lösung, wie ich bin im realen dringend. Danken Ihnen für Ihre Unterstützung.

Danke
Wenn ich mich nicht falsch Ihr jeden Eintrag in datei1 und datei2 zu sein scheint einzigartig Daten. Ich bin unter Hinweis darauf, das letzte Zeichen der Sie Ihre Dateien.

Also, wenn alle Daten sind einzigartig alle Rekorde gehen sollte, um File4 .. n't Ist es?

Erklären Sie deutlich mehr, so dass Sie sich einen schnellen ll Antwort von diesem Forum.
Glauben Sie mir, hier in diesem Forum wirklich brillant und Experten hier, um Ihnen zu helfen, jederzeit ..

ohne mich ..

Prost
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
Ort: Almería, Spanien
Beiträge: 393
Versuchen Sie, so etwas wie:

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
Lage: Варна, България / Milano, Italia
Posts: 2915
Eine andere Art / Awk Lösung
(falls Sie Ihre Dateien noch nicht sortiert, da die Proben Sie auf dem Laufenden):


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

Verwenden Sie nawk oder / usr/xpg4/bin/awk auf Solaris.

PS Für die Variable Spaltenbreite: Sie sollten nicht substr, aber Split zum Beispiel:


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


Zuletzt bearbeitet von radoulov; am 12.12.2007 08:16 AM..
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 03:39 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0