我正在尝试跟踪日志文件并将输出格式化为列。这给了我我想要的没有尾部的东西:
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=®ion=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/