当前位置: 技术问答>linux和unix
求助Linux脚本解析文本内容--几个细节不知如何实现
来源: 互联网 发布时间:2016-09-07
本文导语: 本帖最后由 xrksudy 于 2010-06-28 22:15:37 编辑 假如有下面问题内容: 05-11 00:00:00.329 [bbb:INFO] Task:'pushMailProcessJob' execute successfully aaa afdafsda afdafdaf afdafsd afdas2010-05-11 afdadf afdasdf adfasdf 05-11 00:00:02.095 [bbb:INFO] Task:'onli...
05-11 00:00:00.329 [bbb:INFO] Task:'pushMailProcessJob' execute successfully aaa
afdafsda
afdafdaf
afdafsd
afdas2010-05-11
afdadf
afdasdf
adfasdf
05-11 00:00:02.095 [bbb:INFO] Task:'onlineUserClear' execute successfully aaa
bbb
aaa
05-11 00:00:02.640 [bbb:INFO] Task:'onlineUserClear' execute successfully aaaa
05-11 00:00:02.640 [bbb:INFO] Task:'onlineUserClear' execute successfully aaaa
......
想把上面的文本按照时间进行分解:把他们写入不同的文件中;比如上面的文本,按颜色分解成4个文本。
以下是自己写的脚本,帮忙完善下:
##日志文件的时间,可以通过参数传入或者从日志文件中提取
log_date="05-11"
##日志文件名称
log_file_name="/tmp/log_test/log.2010-05-11"
##日志文件的总行数
file_line_count=`wc -l ${log_file_name} | awk '{print $1}'`
echo ${file_line_count}
##异常记录的总行数
exception_line_count=`grep "^${log_date}" ${log_file_name} | wc -l`
echo ${exception_line_count}
execut_count=1
#记录行索引
row_index=1
##循环文件的每一行
if [ "${execut_count}" -le "${file_line_count}" ]; then
##自己的想法,没效果(关键是在这个地方求的记录的具体行)
##awk 'BEGIN {j = '${row_index}'; if (NR > '${row_index}' && NR file}' A
$ cat 0 //生成0-4共4个文件,文件数会自动增长
05-11 00:00:00.329 [bbb:INFO] Task:'pushMailProcessJob' execute successfully aaa
afdafsda
afdafdaf
afdafsd
afdas2010-05-11
afdadf
afdasdf
adfasdf
$ cat 1
05-11 00:00:02.095 [bbb:INFO] Task:'onlineUserClear' execute successfully aaa
bbb
aaa
$ cat 2
05-11 00:00:02.640 [bbb:INFO] Task:'onlineUserClear' execute successfully aaaa
$ cat 3
05-11 00:00:02.640 [bbb:INFO] Task:'onlineUserClear' execute successfully aaaa