在运行grep命令后,我有一个日志文件输出。例如:
2019-01-30 08:58:05.386 -0800 INFO 16168 -程序结束: xxx::xxxxxx::xxxxxxxx:
因此,我需要一个shell/perl/python脚本,它可以在[]即Test1.Demo.v1.0_Final中获取文本,并打印时间戳,即00:06:29 (这是运行所需的时间)。
任何帮助都将不胜感激!
谢谢
因此,这个输出应该发送到一个txt或csv文件中,该文件应该声明为ServiceName收时戳Test1.Demo.V1.0 00:06:29
发布于 2019-01-31 09:08:04
当然,有更好、更优雅的解决方案,但这可以做到:
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 $resultTest1.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"我还没有测试过这个,但应该可以,我相信,并给你一个如何继续下去的想法。
https://stackoverflow.com/questions/54456523
复制相似问题