给定一个XML文件,我正在编写Bash来解析它,但需要创建一个头并分解一个日期字符串吗?
给定一个XML文件,我正在编写Bash来解析它,但需要有关头文件和断开字符串的帮助吗?这就是我到目前为止所做的:给定一个XML文件,我正在编写Bash来解析它,但需要创建一个头并分解一个日期字符串吗?,xml,bash,grep,sh,Xml,Bash,Grep,Sh,给定一个XML文件,我正在编写Bash来解析它,但需要有关头文件和断开字符串的帮助吗?这就是我到目前为止所做的: <dbg><h><d t="2013/08/11 (Aug) (Sun) 00:56:23.491" m="CANLogging" f="../../../ApplCtrl/CANMessageLoger.cpp" l="120" fnc="void CANMessageLoger::WriteToLog(uint16_t, uint16_t, uint
<dbg><h><d t="2013/08/11 (Aug) (Sun) 00:56:23.491" m="CANLogging" f="../../../ApplCtrl/CANMessageLoger.cpp" l="120" fnc="void CANMessageLoger::WriteToLog(uint16_t, uint16_t, uint16_t, uint16_t, uint8_t, uint8_t*)" lvl="DBG_EVENT" thrd=""/></h><b> d2 ff f7 0c 10 27 ff ff ff ff ff </b></dbg>
但是我需要在输出文件中添加一个头:
Date Time source Format Specific data
对于要分析和修改的日期字符串,有点:
13.08.11 00:56:23.491 d2 ff f7 0c 10 27 ff ff ff ff ff
使用svante,我得到:
grep CANLogging $1 | awk '{printf("%s %s",$2,$5); i=18; while(i<NF) { printf(" %s", $i); ++i} printf("\n");}' | awk -F "\"" 'BEGIN{print "Date Time source Format Specific data"}{print $2 " " $3}' | sed 's/^\([0-9]\{2\}\)\([0-9]\{2\}\)\/\([0-9]\{2\}\)\//\2.\3./' > CAN
grep可以记录$1 | awk'{printf(“%s%s”,$2,$5);i=18;而(i这可能会起作用(第一行向新文件添加头,第二行解析日期)。如果需要更多解析,请查看sed
echo "Date Time source Format Specific data" > new.file
sed 's/2013\//13./g' old.file | sed 's/\//./g' >> new.file
也许这会起作用(第一行向新文件添加头,第二行解析日期)
echo "Date Time source Format Specific data" > new.file
sed 's/2013\//13./g' old.file | sed 's/\//./g' >> new.file
这应该行得通。将上一个awk修改为包含sed的标题和管道,以进行简单的日期格式更改:
... | awk -F "\"" 'BEGIN{print "Date Time source Format Specific data"}{print $2 " " $3}' | sed 's/^\([0-9]\{2\}\)\([0-9]\{2\}\)\/\([0-9]\{2\}\)\//\2.\3./' > CAN
awk
BEGIN规则在读取第一条输入记录之前执行一次
sed
命令匹配并替换每行的第一个日期数字和分隔符这应该有效。更改上一个awk以将标题和管道包含到sed中,以进行简单的日期格式更改:
... | awk -F "\"" 'BEGIN{print "Date Time source Format Specific data"}{print $2 " " $3}' | sed 's/^\([0-9]\{2\}\)\([0-9]\{2\}\)\/\([0-9]\{2\}\)\//\2.\3./' > CAN
awk
BEGIN规则在读取第一条输入记录之前执行一次
sed
命令匹配并替换每行的第一个日期数字和分隔符