Here's another way:
grep -vFxf new.txt old.txt >> new.txt 
 The -v flag tells grep to print lines that do NOT match the pattern given, and the -f new.txt tells grep to use the lines in the file new.txt as the patternpatterns to search for. With -F, the  patterns are Fixed strings instead of basic regular expressions and with -x, they have to match the full lines. So grep -vFxf new.txt old.txt means "show me all lines in old.txt that are missing from new.txt".
 We append those lines to new.txt using the >> redirection operator. Note that new.txt is used here both  as input and  as inputoutput, but grep will read the full initial contentcontents of new.txt to build the list of strings to search and stop reading it after that, so extra lines printed afterwards to new.txt won't be read again.
 
                 
                 
                