Зачем ограничивать себя в sed? Быстрый тест на моей коробке:
$ tr 'aeiouAEIOU' 'AEIOUaeiou'
работает почти в 6 раз быстрее, чем эквивалентная команда sed. (И перенаправляя вывод в сегмент битов, tr в 135 раз быстрее, вывод в конвейер - в 38,5 раза быстрее. Конечно, это тесты с единичным тестом, и они не совсем точны, но tr - правильный инструмент для этого.)