1

我在解析日志文件时遇到问题...这是一个日志文件示例(在现实生活中包含 bash 颜色代码):

foo completely unintresting line bar
foo [INFO] [#############] bar 
foo [INFO] [#######______] bar 

我需要部分“[#############]”和“[####### __ ]”。为了获得这些信息,我删除了一些无趣的行:

CMD_TAIL=`tail -n 3 server.log | sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" | grep -E '\[INFO\] \[[#_]+\]'`

但是如果我“走” CMD_TAIL 我会得到这个(空格替换为换行符):

1: foo :2
1: [INFO] :2
1: [#############] :2
1: bar :2
...

如何获得完整的行,以便提取所需的信息?

4

1 回答 1

1

如果您在类似 bash 的外壳中,请尝试在循环之前将内部字段分隔符设置为换行符:

IFS=$'\n'
for TAIL in $CMD_TAIL; do
    echo "1: $TAIL :2"
done
于 2012-06-11T10:42:06.163 回答