Betrachten Sie folgende Dateien:
file1::
boo,8,1024
foo,7,2048
file2::
foo,0,24,154
noo,0,10,561
file3::
24,154,7,1024,0
Was ich brauche, ist zu Datei1 zu gehen und zu überprüfen, ob $2==7; wenn sie wahr sind , nehmen $1, $2und $3von File1 ; jetzt muss ich vergleichen, ob $1von Datei1 gleich $1von Datei2 ist ; wenn das stimmt, muss ich nehmen $3und $4von File2 , die existieren nicht in File1 , dann muss ich gehen File3 und prüfen , ob $1von File3 gleich $3von File2 und $2von File3 ist gleich $4von File2 ; Wenn ja, muss ich überprüfen, ob $2aus Datei1ist gleich $3von File3 , dann, wenn diese Bedingung wahr ist, muss ich $3von File1 mit $4von File3 vergleichen , wenn $3von File1 mehr ist als $4von File3 .
Ich habe folgendes Skript ausprobiert:
cat [file1] [file2] [file3] |
awk -F,
'{if(NF==3)
{if($2==7){a[$1]=$1; b[$1]=$2; c[$1]=$3}
}else
{if(NF==4){if(a[$1]==$1){d[$3]=$3; e[$4]=$4}
}else
{if(NF==5){if(d[$1]==$1 && e[$2]==$2){print a[$1], b[$1], c[$1], d[$1]}}
}
}
}'
Die gewünschte Ausgabe ist:
foo,7,2048,24,154,1024