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
, $2
und $3
von File1 ; jetzt muss ich vergleichen, ob $1
von Datei1 gleich $1
von Datei2 ist ; wenn das stimmt, muss ich nehmen $3
und $4
von File2 , die existieren nicht in File1 , dann muss ich gehen File3 und prüfen , ob $1
von File3 gleich $3
von File2 und $2
von File3 ist gleich $4
von File2 ; Wenn ja, muss ich überprüfen, ob $2
aus Datei1ist gleich $3
von File3 , dann, wenn diese Bedingung wahr ist, muss ich $3
von File1 mit $4
von File3 vergleichen , wenn $3
von File1 mehr ist als $4
von 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