运行grep命令后,我得到了一个日志文件输出。 例如:
2019-01-30 08:58:05.386 -0800 INFO [16168]-程序已结束: xxx :: xxxxxx :: xxxxxxxx :: xxxxxxxxxxxxxxxx xxx xxxxxx [Test1.Demo.v1.0_Final] [xxxxxxx] pid 16168用户dexter在00:06:29之后
因此,我需要一个shell / perl / python脚本,该脚本可以获取[]内部的Text,即Test1.Demo.v1.0_Final并打印时间戳,即00:06:29(这是它花费的时间运行)
任何帮助将不胜感激!
谢谢
因此,此输出应发送到txt或csv文件,说明 服务名称|时间戳记 Test1.Demo.V1.0 00:06:29
答案 0 :(得分:0)
当然有更好,更优雅的解决方案,但这可以做到:
var1=$(cat log.file | cut -d'[' -f3- | cut -d']' -f1)
var2=$(cat log.file | grep -o -P 'after.{0,9}'| cut -d' ' -f2)
result="$var1 $var2"
echo $result
Test1.Demo.v1.0_Final 00:06:29
var1
获得第一部分“ Test1.Demo ...”
并且var2
获取时间戳。最后,result
是串联的var1
和var2
要搜索多个文件,您可以将其包装在一些循环中,例如:
result=""
for f in $(find /path/to/your/logs -name 'Logfile*'); do
while read line; do
if echo "$line" | grep -q 'Program Ended'; then
var1=$(cat "$line" | cut -d'[' -f3- | cut -d']' -f1)
var2=$(cat "$line" | grep -o -P 'after.{0,9}'| cut -d' ' -f2)
result+="$var1 $var2\n"
fi
done < $f
done
echo -e "$result"
我还没有测试过,但是我相信这应该没问题,并告诉您如何进行操作