【轻知识】通过access日志修复数据,使用sed、xargs(

2019-08-26  本文已影响0人  言十年

xargs 对引号的过滤是重点。

修复数据的一种方式。把access日志中的参数重新 curl。我们框架的access日志是json格式的。(可能你想通过nginx的access去修复,那下面命令就不太适合,需要做更多的工作了)。

我们的框架(用的swoole)中的日志格式大致如下。

{
 "datetime":"2019-08-26T11:35:22.675+0800",
 "env":"dev",
 "log_type":"access",
 "log_level":"NOTICE",
 "app_name":"api-v2",
 "uri":"/",
 "status":1,
 "client_id":"",
 "device_id":"",
 "x_sqkb_trace_id":"",
 "x_forwarded_for":"",
 "http_code":"200",
 "ms":"0.087976455688477"
}

有同学说使用xargs的时候引号被过滤了。那接口收到的数据自然就不是正确的json。这时候需要对引号进行转义。所以用sed -e 's/"/\\"/g'

那么命令如下

cat  xxx_access_20190824.log | sed -e 's/"/\\"/g'| xargs -n1  curl -X POST localhost:xxx/v2/api/xxx -H 'Content-Type: application/json' -d</pre>

参考链接:

*《Why does xargs strip quotes from input?https://unix.stackexchange.com/questions/38148/why-does-xargs-strip-quotes-from-input

上一篇下一篇

猜你喜欢

热点阅读