Eu tenho o seguinte csv. Estou tentando remover o 20 de 2017 para que fique formatado como 3717 ou 31817. As posições são sempre diferentes devido a algumas datas terem dias de um dígito. Como o ano tem sempre 4 dígitos, como posso remover o 20 da segunda coluna da direita para a esquerda?
12 322017 EODTRANSACÇÃO J 87.75 12 3232017 EODTRANSACÇÃO J 155 45 3302017 EODTRANSACÇÃO J 270
Resultado Esperado
12 3217 EODTRANSACÇÃO J 87.75 12 32317 EODTRANSACÇÃO J 155 45 33017 EODTRANSACÇÃO J 270
Responder1
estranhoabordagem:
awk '{match($2, /^([0-9]+)[0-9]{2}([0-9]{2})$/, a); $2=a[1]a[2]}1' file
A saída:
12 3217 EODTRANSACTION J 87.75
12 32317 EODTRANSACTION J 155
45 33017 EODTRANSACTION J 270
match($2, /^([0-9]+)[0-9]{2}([0-9]{2})$/, a)
- capturará todos os dígitos do segundo campo, exceto o3terceiro e4o dígito no final
Responder2
Substitua o segundo campo pelo resultado de: substituindo o primeiro "20" no segundo campo pela string vazia e imprima a linha resultante:
awk '{$2=gensub("20", "", 1, $2); print;}' input > output