gpt4 book ai didi

linux - 尝试使用 tailf -f 打印 json 部分的日志文件并保留标题未转换

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:13 24 4
gpt4 key购买 nike

日志文件的一行示例:

2018-07-30T10:47:23.027Z|SomeInfo|DEBUG|4141dadfawe||Sending request:{"some":{"json":"eggsspam"}}

我的别名:

ssh -o StrictHostKeyChecking=no 
-o UserKnownHostsFile=/dev/null root@10.143.3.51
-p614 "tail
-f /var/opt/pathtolog/log.log" | grep
-o --line-buffered \{.*\:\{.*\:.*\}\} | jq .
}

所以现在我正在通过 ssh 使用 tail -f 读取日志文件,仅 grep json 并将其发送到 jq。这部分工作正常,json 格式正确,但我丢失了 header 。

总结一下:2018-07-30T10:47:23.027Z|SomeInfo|DEBUG|4141dadfawe||发送请求:我想原封不动地打印这部分,然后漂亮地打印格式良好的 json {
“一些”: {
“json”:“eggsspam”
}
}

最佳答案

可能这会有所帮助,它正在使用 awk,例如:

echo '2018-07-30T10:47:23.027Z|SomeInfo|DEBUG|4141dadfawe||Sending request:{"some":{"json":"eggsspam"}}' \
| awk -F"request:" '{ print $1"requests:"; print $2 | "jq" }'

它会输出:

2018-07-30T10:47:23.027Z|SomeInfo|DEBUG|4141dadfawe||Sending requests:
{
"some": {
"json": "eggsspam"
}
}

它通过使用定界符 -F"request:" 来工作,然后只传递给 jq 第二列,在这种情况下,需要漂亮的 json打印 打印 $2 | “jq”

这是一个使用 {.*\} 作为模式搜索 json 的示例,肯定可以改进,在这种情况下,json 必须是日志的最后一部分才能工作:

$ echo '2018-07-30T10:47:23.027Z|SomeInfo|DEBUG|4141dadfawe||Sending request:{"some":{"json":"eggsspam"}}' \
| awk 'match($0, /\{.*\}/) {
print substr($0, 0, length($0)-RLENGTH);
print substr($0, RSTART, RLENGTH) | "jq"
}'

它还会输出:

2018-07-30T10:47:23.027Z|SomeInfo|DEBUG|4141dadfawe||Sending request:
{
"some": {
"json": "eggsspam"
}
}

关于linux - 尝试使用 tailf -f 打印 json 部分的日志文件并保留标题未转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51590452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com