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
Vergleichen von zwei Dateien und entfernen Sie die übereinstimmenden Zeilen auf die Dateien shellscripter Shell Programmierung und Scripting 4 06-20-2009 09:48 AM
passenden String in zwei Akten von unterschiedlicher Länge ad_meis Shell Programmierung und Scripting 2 05-19-2009 11:49 AM
Matching und die Kombination von zwei Dateien sickboy Shell Programmierung und Scripting 3 07-17-2008 01:20 PM
Matching und die Kombination von zwei Dateien p3t3r Shell Programmierung und Scripting 5 05-20-2008 11:16 AM
Finden Sie passende Zeilen zwischen 2 Dateien jojojmac5 UNIX for Dummies Questions & Answers 5 01-18-2007 01:06 PM

Reply
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 07-01-2009
kylle345 kylle345 is offline
Registrierte Nutzer
  
 

Registriert seit: Mai 2009
Beiträge: 53
Matching-2-Dateien

Hi,

Ich bin in der Lage, die Dateien zu ändern (eine Datei), aber ich habe eine harte Zeit der Arbeit mit mehreren Dateien gleichzeitig.

Ich habe also zwei Dateien. Grundsätzlich möchte ich mit zwei Dateien auf der Grundlage bestimmter Spalten. Beide Dateien sind TAB-seperated.

Datei1 etwa so aussieht:

Code:
num1  89  george
num4  78  bob

Datei 2 ist eine viel größere Datei somethign und sieht wie folgt aus:

Code:
num1  3    lion
num1  13  tiger
num1  84  bear
num4  3    house
num4  19  dog
num4  77  mouse

Also, was ich will, ist mit der Spalte 1 von Files1 und 2. Ich möchte auch subtrahieren Spalte 2 aus beiden Dateien. Also, wenn sie ein Spiel, ich will den Druck (in einer separaten Datei) die Zeile mit dem kleinsten Unterschied für Spalte 2 genannt ist.

Also für mein Beispiel, die Ausgabe-Datei sieht dann wie folgt aus

Num1 5 George tragen
num4 1 Bob Maus


Danke

Zuletzt bearbeitet von Yogesh Sawant; am 07-05-2009 11:29 AM.. Grund: Code-Tags hinzugefügt
  #2 (permalink)  
Old 07-02-2009
rakeshawasthi rakeshawasthi is offline
Registrierte Nutzer
  
 

Join Date: Aug 2004
Ort: Indien
Beiträge: 379
Was haben Sie bisher versucht?
  #3 (permalink)  
Old 07-02-2009
lathavim lathavim is offline
Registrierte Nutzer
  
 

Join Date: Jun 2009
Beiträge: 73
Stellen Sie fest, ob das hilft.

Code:
while read value1
do
a=`echo $value1 | cut -d ' ' -f1`
b=`echo $value1 | cut -d ' ' -f2`
c=`echo $value1 | cut -d ' ' -f3`
while read value2
do
a1=`echo $value2 | cut -d ' ' -f1`
b1=`echo $value2 | cut -d ' ' -f2`
c1=`echo $value2 | cut -d ' ' -f3`
if [ "$a" = "$a1" ]
then
b2=`expr $b - $b1`
echo $a $b2 $c $c1 >>outfile
fi
done<file2
done <file1
sort -o outfile2 -2 outfile
while read out1
do
x=`echo $out1 | cut -d ' ' -f1`
grep $x outfile2 | head -1 >>finalout
grep -v $x outfile2 >tmp
mv tmp outfile2
done<outfile2


Zuletzt bearbeitet von Yogesh Sawant; am 07-05-2009 11:28 AM.. Grund: Code-Tags hinzugefügt
  #4 (permalink)  
Old 07-02-2009
palsevlohit_123 palsevlohit_123 is offline
Registrierte Nutzer
  
 

Join Date: Aug 2008
Ort: Chennai / Indien
Beiträge: 120
Probieren Sie dies ...



Code:
while read value1
do
        a=`echo $value1 | cut -d ' ' -f1`
        b=`echo $value1 | cut -d ' ' -f2`
        c=`echo $value1 | cut -d ' ' -f3`
        x=`grep "$a" file2|sort -nr -k2,2|head -1|cut -d' ' -f1`
        y=`grep "$a" file2|sort -nr -k2,2|head -1|cut -d' ' -f2`
        z=`grep "$a" file2|sort -nr -k2,2|head -1|cut -d' ' -f3`
        Diff=`expr $b - $y`
        echo "$a $Diff $c $z" >>outfile
done <file1

Hinweis:
Datei1 - Ihre erste Datei
Datei2 - Ihre zweite Datei
outfile - Ergebnis-Datei
  #5 (permalink)  
Old 07-02-2009
rakeshawasthi rakeshawasthi is offline
Registrierte Nutzer
  
 

Join Date: Aug 2004
Ort: Indien
Beiträge: 379
Ich hatte die Lösung parat, aber wollten Sie, es zu versuchen ...

Code:
find_corresponding_least_val()
{
   cat file2 | grep "$_key" | awk '{
      if((val-$2) < _diff) {
         _diff=val-$2; args=$3
      }
      else
         _diff=val-$2
   }
      END {
         printf("%s\t%s\t%s\n", key, _diff, args)
   }' key="$_key" val="$_val"
}

while read line
do
   _key=`echo $line | awk '{print $1}`
   _val=`echo $line | awk '{print $2}`
   _args=`echo $line | awk '{print $3}`
   find_corresponding_least_val $_key $_val
done < file1

Reply

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 10:05 AM.


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