Você pode comentar como isso funciona? Ele faz bem com o exemplo, mas quando eu coloco uma linha mais longa com várias datas, de alguma forma dá 01.01.1970 no final da linha. Gostaria que ele alterasse o formato de data para a coluna que é o número 12. e depois da coluna 12 existam outras 10 colunas. As datas devem ser alteradas na coluna 12 e 15. Outros campos / colunas não devem ser alterados.
Maris
Funciona como charme! Só eu separei para o meu $ i (11) e segunda vez eu levo para o meu $ i (14), não funcionou em conjunto 11..14, erro de análise de tempo em /usr/lib/perl/5.14/Time/Piece.pm linha 469, & lt; & gt; linha 1.:)
Este comando separa campos com separadores ; e .. Em seguida, modifica o último campo desta maneira: se for menor ou igual a 13, é transformado em 20last_field, caso contrário, é transformado em 19last_filed, em seguida, imprime os campos na mesma ordem que antes, com os mesmos separadores, incluindo o sexto campo modificado (agora chamado x ).
Esta poderia ser uma boa solução também, mas o problema é que os campos não podem ser separados com "." porque às vezes pode haver alguma informação com um ponto antes de $ 6 e será contada de forma errada.
Isso pode ser feito com
awk
:Este comando separa campos com separadores
;
e.
. Em seguida, modifica o último campo desta maneira: se for menor ou igual a 13, é transformado em20last_field
, caso contrário, é transformado em19last_filed
, em seguida, imprime os campos na mesma ordem que antes, com os mesmos separadores, incluindo o sexto campo modificado (agora chamadox
).fonte
Usando
dconv
de dateutils :produz exatamente a saída desejada.
fonte