Clean Bash.
infile='data.csv' while read line ; do if [[ $line =~ ^(.*),([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}),(.*)$ ]] ; then echo "${BASH_REMATCH[1]},${BASH_REMATCH[4]}-${BASH_REMATCH[3]}-${BASH_REMATCH[2]},${BASH_REMATCH[5]}" else echo "$line" fi done < "$infile"
Input file
xxxxxxxxx,11/03/2011,yyyyyyyyyyyyy xxxxxxxxx,10/04/2011,yyyyyyyyyyyyy xxxxxxxxx,10/05/2012,yyyyyyyyyyyyy xxxxxxxxx,10/06/2011,yyyyyyyyyyyyy
gives the following result:
xxxxxxxxx,2011-03-11,yyyyyyyyyyyyy xxxxxxxxx,2011-04-10,yyyyyyyyyyyyy xxxxxxxxx,2012-05-10,yyyyyyyyyyyyy xxxxxxxxx,2011-06-10,yyyyyyyyyyyyy
Fritz G. Mehner Apr 14 2018-11-11T00: 00Z
source share