sed 's/\([^,]\{0,3\}\)[^,]*//g'
truncará cada coluna para os 3 primeiros caracteres. Colunas são delimitadas pelo caractere ','.
Como funciona:
-
Ele encontra (ganancioso) uma string com 0 a 3 caracteres diferente de ',' e lembra como primeiro grupo (referenciado por \ 1)
-
Em seguida, ele tenta encontrar muito mais caracteres além de ',' como poderia.
-
Tudo isso é substituído pelo grupo 1 (que são os primeiros 3 caracteres).
-
Por causa da opção
g
, ele fará isso várias vezes em cada linha, truncando todas as colunas, não apenas a primeira.
EDITAR:
Como apontado no comentário, o primeiro passo pode ser otimizado se você usar ([^,]\{3\}\)
. Desta forma, estamos apenas combinando exatamente 3 caracteres. Se houver menos, não nos importamos, já que não precisamos truncar esse campo. Então o comando final seria:
'sed 's/\([^,]\{3\}\)[^,]*//g''