Hi All,
My XML file looks like below:
<logEvent xsi:type="logservice:LogEvent" timestamp="1394713811052" severity="3" messageCode="TM_6228" message="Writing session output to log file ." user="" stacktrace="" service="" serviceType="IS" clientNode="dev" pid="712" threadName="DIRECTOR" context="">
</logEvent>
<logEvent xsi:type="logservice:LogEvent" severity="3" messageCode="TM_6228" message="Writing session output to log file ." timestamp="1394713811052" user="" stacktrace="" service="" serviceType="IS" clientNode="" pid="712" threadName="DIRECTOR" context="">
</logEvent>
<logEvent xsi:type="logservice:LogEvent" severity="3" messageCode="VAR_27028" message="Use override value" user="" stacktrace="" service="" serviceType="IS" clientNode="" pid="712" threadName="DIRECTOR" context="" timestamp="1394713811060">
</logEvent>
The timestamp value above is epoch time. I know how to convert epoch time to readbale format using date command. I want to replace the epoch timestamp value in the xml with readable date format[using date command]
The position of timestamp in the XML varies. How do i find and replace in this case. Please help in resolving this.
Regards,
Try:
perl -slpe 'use POSIX;/(timestamp=")([^"]+)/;$ts=strftime "$fmt", gmtime $2/1000;s/(timestamp=")([^"]+)/$1$ts/' -- -fmt="%Y-%m-%d %H:%M" file.xml
Replace the format at the end of that command with whatever format you would pass to date .
If awk is fine for you try this
$ awk -F 'timestamp="' 'NF>1{s=$2;sub(/".*/,"",s);sub(s,strftime("%d-%h-%Y %H:%M:%S",s/1000))}1' file
<logEvent xsi:type="logservice:LogEvent" timestamp="13-Mar-2014 18:00:11" severity="3" messageCode="TM_6228" message="Writing session output to log file ." user="" stacktrace="" service="" serviceType="IS" clientNode="dev" pid="712" threadName="DIRECTOR" context="">
</logEvent>
<logEvent xsi:type="logservice:LogEvent" severity="3" messageCode="TM_6228" message="Writing session output to log file ." timestamp="13-Mar-2014 18:00:11" user="" stacktrace="" service="" serviceType="IS" clientNode="" pid="712" threadName="DIRECTOR" context="">
</logEvent>
<logEvent xsi:type="logservice:LogEvent" severity="3" messageCode="VAR_27028" message="Use override value" user="" stacktrace="" service="" serviceType="IS" clientNode="" pid="712" threadName="DIRECTOR" context="" timestamp="13-Mar-2014 18:00:11">
</logEvent>
Thanks bartus11 and Akshay Hegde.. both solutions worked 