Bash – convert date format in log

bashdate

I have a log with following date format:

2013-12-14 18:53:33 aaaaaaaaaaaaaaaa
2013-12-14 18:53:33 bbbbbbbbb
2013-12-14 18:53:33 ccccccccccccccccccccc

What would be the simplest solution to convert it to

Dec 14 18:53:33 aaaaaaaaaaaaaaaa
Dec 14 18:53:33 bbbbbbbbb
Dec 14 18:53:33 ccccccccccccccccccccc

preferably in bash (or python)

Best Answer

You could do something like:

awk -F- 'BEGIN{split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",m,",")}
         {print m[$2], substr($0,9)}'

Or:

awk -F- '{print substr("JanFebMarAprMayJunJulAugSepOctNovDec", \
         $2*3-2,3), substr($0,9)}'

Or:

sed 's/$/:01Jan02Feb03Mar04Apr05May06Jun07Jul08Aug09Sep10Oct11Nov12Dec/
     s/.....\(..\).\(.*\):.*\1\(...\).*/\3 \2/'
Related Question