Try this instead since it will take your output and make it one giant line with spaces separating the filenames.
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log
awk '$1=$1' ORS=' ' list.log > newlist.log
apt-get install --reinstall $(cat newlist.log)
The only change to your original post is adding in the second awk statement, which could probably be done inline with the first to create the file you want.
This change will force apt-get to correctly redownload the packages and any missing dependencies that were not installed the first time and reinstall them in order.
If we do make it inline, I believe that it would look like this then:
dpkg --get-selections | grep -v deinstall | awk '{print $1}' | awk '$1=$1' ORS=' ' > list.log
And then make sure you really make the system has correct packages (or latest), clean the apt cache, update it and then re-download all the files (you can skip the first two steps if you only want what you have in the cache reinstalled):
apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)
I had over 2k packages installed on a system I upgraded that had a hangup. Using dpkg --configure -a finished the installation (it was in the final phase). I then ran this to make everything reinstall correctly.
Or as stated over at https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data:
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f1)
Just make sure you run an "init 2" first before any reinstall, since some of the components of X or your favorite window manager may not like being reinstalled.