我有一个跟踪AWS CloudWatch日志的进程。 除了CloudWatch组和容器ID预先占用每一行之外,它工作得很好。 例如:
core-api 04a7ce3daf83aa018a92eb4a613c87354695dc8219f213697f7f786b81d4d [PROD] - INFO: GET 200 - 5ms core-api 04a7ce3daf83aa018a92eb4a613c87354695dc8219f213697f7f786b81d4d [PROD] - INFO: POST 200 - 7ms
有没有一种方法来pipe我的日志命令我用一些types的filter,只显示行后信息[PROD] - ?
您可以尝试使用cut来剪切您感兴趣的列。
tail -f whatever | cut -d ' ' -f 3- [PROD] - INFO: GET 200 - 5ms [PROD] - INFO: POST 200 - 7ms
这个-d设置一个空格作为字段分隔符, -f指定只显示第三个和后续的字段。
指定字段也可能变得更复杂。 假设你只是真的想摆脱那个恼人的无用的第二个领域。 然后你可以指定-f 1,3- 。
core-api [PROD] - INFO: GET 200 - 5ms core-api [PROD] - INFO: POST 200 - 7ms
请参阅cut手册页,以了解有关使用此命令可以执行的更多操作。
你可以尝试使用awk。 如果这些行都被4个字段所占据
...| awk '{$1=$2=$3=$4=""; print $0}'
但是您可能需要显式刷新输出
...| awk '{$1=$2=$3=$4=""; print $0; fflush() }'
这基本上是无效的前四个领域。 请注意,如果您想打印某些字段,则第一个字段仍然是$ 5,但是如果您想这样做,则不需要首先将字段置空。
如果有可变数量的字段,并且总是以[PROD] -结束,那么你可以使用sed
...| sed s '/^.* \[PROD\] -//'
它基本上取代了从行首开始的所有内容。