问题描述
我正在尝试拖尾日志文件并将输出格式化为列。这给了我没有尾巴的我想要的东西:
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'.
解决方法
您无法使用 -f
的 tail
选项执行此操作。 column
在收到所有输入之前不能产生任何输出,因为它需要通过检查所有输入来计算行数和列数。 tail -f
永远不会停止写作,所以 column
不知道什么时候完成。
你可以使用
tail -n 100 test.log | column -t -s "|"
格式化日志的最后 100 行。