Eu acredito que isso faz o que você quer:
$ awk 'BEGIN{FS=",";OFS=","} $4 ~ /"RENT OUT"/ {NF--;printf $0; x=x%100;x++; printf ",\"REP%04i\"\n",x;next} 1' rentals.csv
"00:30:00","01:00:00","10/14/2014","RETURN","PASADENA","TX","12:30:00","sedan","","","corporate","CO01353"
"01:00:00","01:30:00","10/14/2014","RENT OUT","HOUSTON","TX","00:30:00","sedan","","","personal","REP0001"
A única parte que é alterada é este comando:
$4 ~ /"RENT OUT"/ {NF--;printf $0; x=x%100;x++; printf ",\"REP%04i\"\n",x;next}
Tomando cada nova peça uma de cada vez:
-
NF--
Isso remove o último campo (em branco) da linha.
-
'printf $ 0
Isto imprime a linha (agora sem seu último campo).
-
x=x%100;x++
Isso leva o contador
x
módulo 100 e, em seguida, incrementa-o em 1. Dessa forma, o contador passará de 1 a 100 e volta a 1. -
printf ",\"REP%04i\"\n",x
Isso imprime nosso novo último campo que inclui o contador.
-
next
Como já imprimimos essa linha, informamos
awk
para pular o restante dos comandos e começar de novo com a linhanext
.