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
Vergelijk twee bestanden en het verwijderen van de overeenkomende regels voor zowel de bestanden shellscripter Programmeren en Shell Scripting 4 06-20-2009 09:48
bijpassende string in twee bestanden van verschillende lengte ad_meis Programmeren en Shell Scripting 2 05-19-2009 11:49
Matching en de samenvoeging van twee bestanden sickboy Programmeren en Shell Scripting 3 07-17-2008 01:20 PM
Matching en de samenvoeging van twee bestanden p3t3r Programmeren en Shell Scripting 5 05-20-2008 11:16
Vind matching tussen 2 bestanden jojojmac5 UNIX voor 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-01-2009
kylle345 kylle345 is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posts: 53
Gevonden 2 bestanden

Hoi,

Ik kan wijzigen bestanden (een bestand), maar ik heb een harde tijd werken met meerdere bestanden tegelijk.

Dus ik heb twee bestanden. Eigenlijk wil ik match twee bestanden op basis van bepaalde kolommen. Beide bestanden zijn tab-seperated.

Bestand1 ziet er ongeveer als volgt uit:

Code:
num1  89  george
num4  78  bob

Bestand 2 is een veel groter bestand en kijkt somethign als volgt uit:

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

Dus wat ik wil doen is match kolom 1 van Files1 en 2. Ik wil ook aftrekken kolom 2 uit beide bestanden. Dus als ze een wedstrijd, ik wil afdrukken (in een apart bestand) de rij met het kleinste verschil van kolom 2.

Dus voor mijn voorbeeld hierboven, de output bestand zou er zo uitzien

num1 5 george beer
num4 1 bob muis


bedankt

Laatst gewijzigd door Yogesh Sawant; op 07.05.2009 11:29.. Reden: code tags toegevoegd
  #2 (permalink)  
Old 07-02-2009
rakeshawasthi rakeshawasthi is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2004
Locatie: India
Posts: 379
Wat heb je geprobeerd tot nu toe?
  #3 (permalink)  
Old 07-02-2009
lathavim lathavim is offline
Geregistreerde gebruiker
  
 

Join Date: juni 2009
Posts: 73
Kijk of dit helpt.

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


Laatst gewijzigd door Yogesh Sawant; op 07.05.2009 11:28.. Reden: code tags toegevoegd
  #4 (permalink)  
Old 07-02-2009
palsevlohit_123 palsevlohit_123 is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2008
Locatie: India, Chennai
Posts: 120
Probeer deze ...



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

Opmerking:
bestand1 - uw eerste bestand
bestand2 - uw tweede bestand
hetbestand - het resultaat bestand
  #5 (permalink)  
Old 07-02-2009
rakeshawasthi rakeshawasthi is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2004
Locatie: India
Posts: 379
Ik had de oplossing klaar, maar wilde dat je het eens proberen ...

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

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 07:08.


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