Use nl
:
nl -s, -w1 file
Isso adicionará um número incremental ao início de cada linha. -s,
especifica que o número e o resto da linha devem ser separados por uma vírgula. -w1
especifica o número de caracteres a serem usados para o número da linha.
Editar : Como Stéphane Chazelas apontou em o comentário , a flag -w1
reduz os números com mais de 1 dígitos. Isso pode ser um bug na implementação do nl
do Solaris. Além disso, você pode querer numerar o conteúdo de linha especial ( -d $'\n\n'
) e as linhas emtpy (-ba):
NL='
'
nl -s, -ba -d "$NL$NL" file
A saída (com GNU coreutils 8.12.197
):
$ nl -s, -ba -d "$NL$NL" file
1,4,2,64,1088,80,1,Y,Y
2,5,2,64,1088,95,2,Y,Y
3,8,2,1088,39813120,10,12,Y,Y
4,6,2,1088,39813120,0,2,Y,Y
5,7,2,1088,39813120,5,1,Y,Y
6,8,2,1088,39813120,10,2,Y,Y
No seu script, seria assim:
NL='
'
for fname in conv2016_02_cos_speed2percent_data_migration.csv; do
nl -s, -ba -d "$NL$NL" "$fname" > tmp.tmp && mv tmp.tmp "$fname"
done