如何用shell解析xml文件,将下图中<LOG_LIST>中<LEVEL>的值小于<ENABLE_LEVEL>值的输出,输出样式如下: 5
日志名级别<LEVEL>zthread.cpp:1234clibc2config.cpp:1735csopmanager.cpp:157src_info="csopman...
日志名 级别<LEVEL>zthread.cpp:123 4
clibc2config.cpp:173 5
csopmanager.cpp:15 7
src_info="csopmanager.cpp:24 7 展开
clibc2config.cpp:173 5
csopmanager.cpp:15 7
src_info="csopmanager.cpp:24 7 展开
展开全部
用shell不如用python,python很快就能解析出xml
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/bin/awk
BEGIN{
print("logfile\t","level")
}
/<ENABLE_LEVEL>/{
a=$0;
sub(/[ ]*<ENABLE_LEVEL>/,"",a);
sub(/<\/ENABLE_LEVEL>[ ]*/,"",a);
en_level=a;
}
/<LOG src_info=/{
a=$0;
sub(/[ ]*<LOG src_info="/,"",a);
sub(/">[ ]*/,"",a);
logfile=a;
}
/<LEVEL>/{
level=$0;
sub(/[ ]*<LEVEL>/,"",level);
sub(/<\/LEVEL>[ ]*/,"",level);
if( level <= en_level){
print(logfile"\t"level);
}
}
----
你的日志命名为log,脚本命名为a.awk
加点分哈。
使用方法:
awk -f a.awk log
输出:
logfile level
file1.cpp:123 3
fileA.cpp:623 2
fileb.cpp:323 1
BEGIN{
print("logfile\t","level")
}
/<ENABLE_LEVEL>/{
a=$0;
sub(/[ ]*<ENABLE_LEVEL>/,"",a);
sub(/<\/ENABLE_LEVEL>[ ]*/,"",a);
en_level=a;
}
/<LOG src_info=/{
a=$0;
sub(/[ ]*<LOG src_info="/,"",a);
sub(/">[ ]*/,"",a);
logfile=a;
}
/<LEVEL>/{
level=$0;
sub(/[ ]*<LEVEL>/,"",level);
sub(/<\/LEVEL>[ ]*/,"",level);
if( level <= en_level){
print(logfile"\t"level);
}
}
----
你的日志命名为log,脚本命名为a.awk
加点分哈。
使用方法:
awk -f a.awk log
输出:
logfile level
file1.cpp:123 3
fileA.cpp:623 2
fileb.cpp:323 1
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询