Parece que você deseja remover apenas os espaços antes ou depois de um ponto e vírgula. Nesse caso:
$ sed 's/[[:space:]]*;[[:space:]]*/;/g' text
03139;5;IT1234978208;20150930;CTZ 13/31.12.15;
03137;6;IT1234978206;20151015;CTZ 13/31.11.18;
....
....
03134;8;IT1234974406;20151212;CTZ 13/37.13.17;
Como funciona:
O comando de substituição do sed normalmente se parece com s/old/new/
, em que old
é uma expressão regular. Nesse caso, adicionamos um sufixo g
para indicar a substituição global (em vez de apenas substituir uma instância). No nosso caso, old
corresponde a qualquer ;
e qualquer espaço em branco ao redor: s/[[:space:]]*;[[:space:]]*
. Isso é substituído por new
, que é apenas um ;
.