freitasm: I wear an Icebreaker merino top under my shirts (unless it's summer). I get those washed once every couple of days as they don't seem to smell that bad. The shirts though are washed every day - cotton is not as good as wool for smells.
And please do not use artificial fibres. They don't help with evaporating sweat. It's cotton or cotton.
I bought a few under shirts from the warehouse that are specifically designed to wick sweat away and evaporate and dry quickly they seem to work very well and only cost me $9.95 each and no they are not cotton