![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|