bash - 管道尾部输出到列

标签 bash unix tail

我正在尝试跟踪日志文件并将输出格式化为列。这给了我我想要的没有尾部的东西:

cat /var/log/test.log | column -t -s "|"

如何将 tail -f var/log/test.log 的输出通过管道传输到 column 中?

编辑:这是文件的摘录。我正在手动添加文件的第一行,以便它可以用作列标题,但如果需要,我可以设置不同的格式。

timestamp|type|uri|referer|user_id|link|message
Feb  5 23:58:29 181d5d6339bd drupal_overlake: 1612569509|geocoder|https://overlake.lando/admin/config/development/configuration/config-split/add|https://overlake.lando/admin/config/development/configuration/config-split/add|0||Could not execute query "https://maps.googleapis.com/maps/api/geocode/json?address=L-054%2C%20US&language=&region=US".
Feb  5 23:58:29 181d5d6339bd drupal_overlake: 1612569509|geocoder|https://overlake.lando/admin/config/development/configuration/config-split/add|https://overlake.lando/admin/config/development/configuration/config-split/add|0||Unable to geocode 'L-054, US'.

最佳答案

你不能用 tail-f 选项来做到这一点。 column 在收到所有输入之前不能产生任何输出,因为它需要通过检查所有输入来计算行数和列数。 tail -f 永远不会停止写入,所以 column 不知道什么时候完成。

你可以使用

tail -n 100 test.log | column -t -s "|"

格式化日志的最后 100 行。

关于bash - 管道尾部输出到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66072055/

相关文章:

linux - Shell/bash 中的模式和正则表达式

bash - Bash 中的密码管理

linux - 如何在 shell 中执行没有 .sh 扩展名的文件

linux - 如何永久运行 dockerd

r - 使用 R 选择循环中的第 n 个字符

list - 列表中最后一个元素的值

Bash:用引号、逗号和换行符解析 CSV

bash - 当在标准错误中看到特定字符串时,如何终止进程?

php - htaccess 重写规则不起作用

linux - 如何在 tail -f 中只显示新记录的内容?