【发布时间】:2021-02-05 23:40:48
【问题描述】:
我正在尝试跟踪日志文件并将输出格式化为列。这给了我我想要的没有尾巴的东西:
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'.
【问题讨论】:
-
column等到标准输入关闭,然后然后计算列数及其宽度。 -
从您的日志文件中添加一段摘录,并将所需的输出添加到您的问题中(无评论)。
-
而不是
column,您可能会接受tail -f /p/a/t/h | tr -s ' ' \\t。输出不如column漂亮,但tr可以在流上工作。 (或者,在这种情况下,tr \| \\t -
感谢您的帮助。 @Cyrus,我添加了日志文件的例外。我想要的输出是第一行用作在尾部顶部保持可见的列标题,但是我意识到这可能非常困难或不可能。
-
@WilliamPursell 谢谢!我发现在你的命令中修改分隔符绝对是对
tail没有任何管道的改进:tail -f /var/log/drupal.log | tr -s '|' \\t日志更加清晰。