Eu tenho um arquivo com milhares de entradas como esta:
6/05/2016,32,34,40,45,48,,01,10
10/05/2016,02,26,27,40,49,,05,10
13/05/2016,07,15,28,31,42,,10,11
17/05/2016,15,27,32,36,39,,03,10
Quero substituir a data do primeiro campo por um número sequencial, começando com 800. Então essa lista seria transformada em
800,32,34,40,45,48,,01,10
801,02,26,27,40,49,,05,10
802,07,15,28,31,42,,10,11
803,15,27,32,36,39,,03,10
...
Como faço isso?
Responder1
Com awk
isso é tão simples quanto
awk -F, -vOFS=, '{$1=n++; print}' n=800 file
Você define os delimitadores de entrada e saída como ,
via -F,
e -vOFS=,
inicializa uma variável n
como 800
using n=800
. A instrução "action" {$1=n++; print}
é executada para cada registro, definindo o primeiro campo como pós-incremento n
e imprimindo o registro reconstituído