![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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
|
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|