Se a sua entrada não tiver um número de sequência longo no segundo campo, tente:
$ sed -e 's|^[^,]*|#000000000&|;s|#[^,]*\(.\{9\}\),|,|;s|\([0-9]\{3\}\)|/|g;s|/\([^0-9]\)||;s|/$||' file
000/012/345,1s4c3v6s3nh6
123/456/789,9h5vgbdx34dc
000/000/012,7h4f45dcvbgh
001/234/567,09klijnmh563
Explicação
-
s|^[^,]*|#000000000&|
: combinamos todas as coisas do início ao primeiro,
, substituímos por um fabricante#
e n números 0, em que n é o comprimento que queremos preencher. -
s|#[^,]*\(.\{9\}\),|,|
: combinamos todas as coisas do marcador com o primeiro,
, mas mantemos os últimos 9 caracteres antes de,
, descartamos o restante. -
s|\([0-9]\{3\}\)|/|g
: adicione uma/
a cada 3 sequências de dígitos. -
s|/\([^0-9]\)||;s|/$||
: se depois que/
não for um número ou/
estiver no final da linha, nós o removeremos.
ou mais fácil com perl
:
$ perl -F',' -anle '
$F[0] = sprintf "%09s", $F[0];
$F[0] =~ s|.{3}|$&/|g;
chop $F[0];
print join ",",@F;
' file
000/012/345,1s4c3v6s3nh6
123/456/789,9h5vgbdx34dc
000/000/012,7h4f45dcvbgh
001/234/567,09klijnmh563