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
die beiden Dateien koti_rama Shell Programmierung und Scripting 5 08-05-2008 05:20 AM
An zwei Dateien koti_rama Shell Programmierung und Scripting 4 06-10-2008 07:15 AM
, wie sich Dateien jxh461 UNIX for Dummies Questions & Answers 5 08-23-2007 08:11 AM
Join-Dateien mohan705 Shell Programmierung und Scripting 3 03-15-2007 06:51 AM
Join-Dateien choppas Shell Programmierung und Scripting 2 10-18-2006 11:03 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 05-27-2009
Pinnacle pinnacle is offline
Registrierte Nutzer
  
 

Join Date: Apr 2009
Beiträge: 182
LEFT JOIN auf Dateien mit awk

Zitat:
File_A:
NY
NJ
PA
CA
VA
TN
Zitat:
File_B:
NY hallo
NJ 3
CA 1
VA 5
Zitat:
ouptut:
NY, gefunden
NJ, gefunden
PA,
CA, gefunden
VA, gefunden
TN,

Code:
nawk 'NR==FNR{a[$1];next} {if($1 in a) print $1,"Found" else print}'  OFS="," File_B File_A

Die obigen Code funktioniert nicht Hilfe ist gefragt
  #2 (permalink)  
Old 05-27-2009
tonan tonan is offline
Registrierte Nutzer
  
 

Join Date: Apr 2008
Beiträge: 11
Dies war auch einfach, Sie fehlen auf die Syntax

nawk 'NR \u003d\u003d FNR (a [$ 1]; nächsten) (if ($ 1 in a) print $ 1, "gefunden";) print "OFS \u003d", "File_B File_A

Post Update ----- -----

Ausgabe

bash-3.00 $ nawk 'NR \u003d\u003d FNR (a [$ 1]; nächsten) (if ($ 1 in a) print $ 1, "gefunden";) print "OFS \u003d", "File_B File_A
NY, gefunden
NY
NJ, gefunden
NJ
PA
CA, gefunden
CA
VA, gefunden
VA
TN
  #3 (permalink)  
Old 05-27-2009
Pinnacle pinnacle is offline
Registrierte Nutzer
  
 

Join Date: Apr 2009
Beiträge: 182
Zitat:
Zitat von tonan View Post
Dies war auch einfach, Sie fehlen auf die Syntax

nawk 'NR \u003d\u003d FNR (a [$ 1]; nächsten) (if ($ 1 in a) print $ 1, "gefunden";) print "OFS \u003d", "File_B File_A

Post Update ----- -----

Ausgabe

bash-3.00 $ nawk 'NR \u003d\u003d FNR (a [$ 1]; nächsten) (if ($ 1 in a) print $ 1, "gefunden";) print "OFS \u003d", "File_B File_A
NY, gefunden
NY
NJ, gefunden
NJ
PA
CA, gefunden
CA
VA, gefunden
VA
TN

Dies ist nicht der Ausgang Ich suche. finden Sie in der Ausgabe erforderlich
  #4 (permalink)  
Old 05-27-2009
devtakh devtakh is offline
Registrierte Nutzer
  
 

Join Date: Oct 2007
Ort: Bangalore
Beiträge: 514

Code:
awk 'FNR==NR{a[$1]++;next}{if($1 in a)print $1,"Found"; else printf("%s%s\n", $1,OFS)}' OFS="," B A


-Devaraj Takhellambam
  #5 (permalink)  
Old 05-27-2009
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 2928
Oder (Verwendung gawk, nawk oder /usr/xpg4/bin/awk auf Solaris)


Code:
awk 'NR == FNR { _[$1]; next }
($2 = $1 in _ ? "Found" : x) || 1
' OFS=, file_b file_a


Zuletzt bearbeitet von radoulov; am 05-27-2009 02:54 PM..
  #6 (permalink)  
Old 05-27-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Sep 2006
Beiträge: 2558
Wenn Sie Python, eine Alternative

Code:
#!/usr/bin/env python
file2=[i.split()[0] for i in open("file2").read().split("\n")]
for line in open("file1"):
    line=line.strip().split()
    if line[0] in file2:
        print line[0]," found"
    else:
        print line[0],","

Ausgang

Code:
# ./test.py
NY  found
NJ  found
PA ,
CA  found
VA  found
TN ,

  #7 (permalink)  
Old 05-27-2009
durden_tyler's Avatar
durden_tyler durden_tyler is online now Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Apr 2009
Beiträge: 553
Zitat:
...
ouptut:
NY, gefunden
NJ, gefunden
PA,
CA, gefunden
VA, gefunden
TN,
...
Und wenn Sie perl, Dann:


Code:
perl -ne 'BEGIN{open(F,"fileb"); while(<F>){split;$found{$_[0]}="Found"} close(F)} {chomp; print "$_,$found{$_}\n"}' filea

Test:


Code:
$
$ cat filea
NY
NJ
PA
CA
VA
TN
$
$ cat fileb
NY hello
NJ 3
CA 1
VA 5
$
$ perl -ne 'BEGIN{open(F,"fileb"); while(<F>){split;$found{$_[0]}="Found"} close(F)} {chomp; print "$_,$found{$_}\n"}' filea
NY,Found
NJ,Found
PA,
CA,Found
VA,Found
TN,
$

tyler_durden
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 08:59 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