Você pode fazer isso facilmente com awk :
awk -F\; '{print $1 ";" $2 ";" $(NF-1) ";" $NF}'
Isso divide a entrada usando ; ( -F\; ) e imprime o primeiro ( $1 ), o segundo ( $2 ), o penúltimo e o último campo ( $(NF-1) e $NF ; NF contém o número de campos).
A seguinte variante reutiliza o separador de campos especificado na saída:
awk -F\; '{print $1 FS $2 FS $(NF-1) FS $NF}'
Janis sugeriu uma versão melhorada usando OFS também:
awk 'BEGIN{FS=OFS=";"} {print $1,$2,$(NF-1),$NF}'
ou, se você quiser manter o separador como outro parâmetro:
awk -F\; 'BEGIN{OFS=FS} {print $1,$2,$(NF-1),$NF}'