Я бы сделал это с помощью awk, например,
awk '/[0-9]+/ { a = a $0 ";" } END { print a }' file.txt
(недостатком является то, что a "накапливается" в памяти).
EDIT
Забыли про принтф! Так же
awk '/[0-9]+/ { printf "%s;", $0 }' file.txt
или, вероятно, лучше, что уже было дано в других ответах с использованием awk.