Tente isto:
sed -E 's|([0-9]{2}/[0-9]{2})/([0-9]{4})|/|g' file
ou
perl -pe 's|(\d{2}/\d{2})/(\d{4})|$2/$1|g' file
Saída:
1111,2222,3333,4444,5555,6666,7777,2017/11/27 18:58:48,2017/11/27 19:07:57
Eu tenho o arquivo csv com a seguinte estrutura de dados: [MM / DD / AAAA]
1111,2222,3333,4444,5555,6666,7777,11/27/2017 18:58:48,11/27/2017 19:07:57
Estou com o objetivo de alterar o formato da data para: [AAAA / MM / DD]
1111,2222,3333,4444,5555,6666,7777,2017/11/27 18:58:48,2017/11/27 19:07:57
Estou tentando realizar isso usando o awk, mas qualquer outra ferramenta que faça o trabalho também seria aceitável.
Awk
solução:
awk -F',' 'function reformat_date(c){ # 'c' - column value as an argument
y = substr(c, 7, 4); # extract 'year' value
sub(/\/[0-9]{4}/, "", c); # remove 'year' value
return y"/"c # return rearranged 'YYYY/MM/DD' value
}
{ $8 = reformat_date($8); $9 = reformat_date($9) }1' OFS=',' file.csv
Exemplo de saída:
1111,2222,3333,4444,5555,6666,7777,2017/11/27 18:58:48,2017/11/27 19:07:57
Se seus dados não incluírem nenhum outro formato semelhante a data, você poderá usar sed
na linha inteira para alterar as datas:
sed 's#\([0-9][0-9]\)/\([0-9][0-9]\)/\([0-9][0-9][0-9][0-9]\)#//#g'