Ваше регулярное выражение жадный , поэтому он включает весь текст после второй a
до последней точки с запятой. Если вы уточните шаблон, чтобы НЕ быть жадным (со знаком вопроса), и используете опцию -o, вы получите то, что ожидаете:
$cat test.txt | tr -d '\n' | ack -o 'aa.*?;'
aaa;
Подробнее рецепты / подробности здесь