How about three steps if we're just matching lines:-
grep file.txt file-new.txt > zero.txt # Will collect matches
grep -vf file.txt file-new.txt > new.txt # Will get lines from file-new.txt not in file.txt
grep -vf file-new.txt file.txt > back.txt # Will get lines from file.txt not in file-new.txt
Comm uses TAB(\t) as a default output delimiter, so this will make sure awk gets the right output in the right column. This will work if the originating files do not use TAB as a separator. If that is the case then you need to select a different output separator for comm and use the same for awk. In the example you posted there appeared to be spaces between the fields and using that I got the correct result. Did you test with the option -F"\t" ?