The experienced bowler, 35, was injured during the Indian Premier League and missed the World Cup opener against the host nation.
He will be replaced by left-arm paceman Beuran Hendricks in South Africa's squad for the rest of the tournament.