awk -F " " '$1==$3 {$7=$6; print $0;} $1==$5 {$7=$4; print $0;} ($1 != $3 && $1 != $5) {$7=$2; print $0}' test.txt
If e.g. both $1==$3 and $1==$5 are true, both the first two blocks run and print. That's the case on lines 2 and 3. The two blocks also both set $7 from two different fields, though those are the same on the two lines it happens here.
If you want to only ever print each line a maximum of one time, you can set a flag from the branches and print based on that (or not), e.g.:
awk -F " " '{ p=0; } $1==$3 {$7=$6; p=1} $1==$5 {$7=$4; p=1} ($1 != $3 && $1 != $5) {$7=$2; p=1} p {print}' test.txt
print prints $0 if no other arguments are given, and you can actually use just p without a code block in the end, as the default action is just that.
Similarly, to unconditionally print every line, you often see just a trailing 1, as in awk '/.../ { ... } 1'
You'll have to decide what to do with field $7 though, as those three branches all set them to different values.
If you want to execute only one of the blocks (at most), you can use the next statement in each to go the next line:
awk -F " " '$1==$3 {$7=$6; print; next} $1==$5 {$7=$4; print; next} ($1 != $3 && $1 != $5) {$7=$2; print; next} ' test.txt
...and actually looking at the conditions, it seems to me the last one is only ever true if and only if the first two ones are false, so we might as well write it all as an if-else:
awk -F " " '{ if ($1==$3) { $7=$6 }; else if ($1==$5) { $7=$4 }; else { $7=$2 }; print; }' test.txt
$1==$3and$1==$5are true, both the first two blocks run and print. That's the case on lines 2 and 3. The two blocks also both set$7from two different fields, though those are the same on the two lines it happens here.-F " "is useless btw as that's setting FS to the default value it already has, just remove it.