Google has no idea which is the main site. It sees that they are duplicates and picks one. Sometimes it may pick each page from a different domain.
A site: search is a special case. It will show you pages even if they are not the ones Google chose to index. Google assumes you are specifically looking for content on a specific domain so will try its best. It will even show pages that redirect!
Option 1: As having multiple domains has no ranking benefit, why not switch to just using one of them. Redirect all the others to it. You may be able to pass your affiliate information with the redirects.
Option 2: As Max suggested, add canonical tags to all pages with their value set to use the domain of your choice. This is a suggestion to Google that should push it to use the domain you want. You can still use the other domains for affiliate purposes as their pages still exist. Could you clarify why you think canonical tags won't work?