使用awk转换日志文件
我有一个Java日志文件,希望使用使用awk转换日志文件,awk,gawk,Awk,Gawk,我有一个Java日志文件,希望使用awk对其进行转换。该文件具有以下记录结构: filename:date time [level] (thread) message 下面是一行示例: 2018-01-19-19.prod.com.gz:2018-01-19 19:14:29,964 [INFO] (Runner for {AccountId: ‘1234’, JobFlowId: ‘abcd’, TaskId: ‘4321’, Type: ‘TestType’}) com.damluar.A
awk
对其进行转换。该文件具有以下记录结构:
filename:date time [level] (thread) message
下面是一行示例:
2018-01-19-19.prod.com.gz:2018-01-19 19:14:29,964 [INFO] (Runner for {AccountId: ‘1234’, JobFlowId: ‘abcd’, TaskId: ‘4321’, Type: ‘TestType’}) com.damluar.AbstractObjectCache: Found unexpired object in local cache for key: testkey
生成的文件需要有字段和\t作为分隔符:
- 数据+时间(已排序)
- 水平仪
- 线
- 信息
:
作为分隔符,那么线程
和消息
字段的内容也会被拆分。最好的处理方法是什么
sed 's/:/:\t/;s/\[/\t&/;s/\]/&\t/;s/)/)\t/' log
上行将通过选项卡
分隔所需字段。如果要输出它们,可以通过管道将其传输到awk以检查:
echo "yourExample"||sed 's/:/:\t/;s/\[/\t&/;s/\]/&\t/;s/)/)\t/'|awk -F '\t' '{for(i=1;i<=NF;i++)print $i}'
2018-01-19-19.prod.com.gz:
2018-01-19 19:14:29,964
[INFO]
(Runner for {AccountId: ‘1234’, JobFlowId: ‘abcd’, TaskId: ‘4321’, Type: ‘TestType’})
com.damluar.AbstractObjectCache: Found unexpired object in local cache for key: testkey
echo“yourExample”sed/:/:\t/;s/\[/\t&/;s/\]/&\t/;s/)/)\t/| awk-F'\t'{for(i=1;i
上述行将通过选项卡
分隔所需字段。如果要输出这些字段,可以通过管道将其发送到awk以检查:
echo "yourExample"||sed 's/:/:\t/;s/\[/\t&/;s/\]/&\t/;s/)/)\t/'|awk -F '\t' '{for(i=1;i<=NF;i++)print $i}'
2018-01-19-19.prod.com.gz:
2018-01-19 19:14:29,964
[INFO]
(Runner for {AccountId: ‘1234’, JobFlowId: ‘abcd’, TaskId: ‘4321’, Type: ‘TestType’})
com.damluar.AbstractObjectCache: Found unexpired object in local cache for key: testkey
echo“yourExample”| sed's/:/:\t/;s/\[/\t&/;s/\]/&\t/;s/)/)\t/“| awk-F'\t”“{for(i=1;iyou至少应该给出日志的一些行作为示例,您认为如何?线程字段是否包含(嵌套的(括号))?我发布了一个示例。不,线程不应该有嵌套的paren。以格式化的方式发布结果文件的片段。结果文件中应该有什么字段分隔符?选项卡应该是分隔符,以便我可以将其视为csv文件。您至少应该给出一些日志行作为示例,您认为线程字段会包含什么(嵌套的(括号))?我发布了一个示例。不,线程不应该有嵌套的参数。以格式化的方式发布结果文件的片段。结果文件中应该有什么字段分隔符?选项卡应该是分隔符,以便我可以将其视为csv文件