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}'