macOS zsh环境下是否有可流式格式化竖线分隔日志为规整表格的命令?
可用命令行工具及使用方案
方案1:Miller(最推荐,原生支持流式处理)
Miller(命令名mlr)是专门处理结构化分隔文本的开源工具,原生支持流式输出、列对齐、自定义列换行规则,完美适配tail -f日志追踪场景。
- 安装方式(macOS环境):
brew install miller
- 使用命令:
tail -f log.log | stdbuf -oL mlr --ifs '\s*\|\s*' --opprint --headerless-csv-output wrap -f 3 -w $((COLUMNS - 30))
参数说明:
--ifs '\s*\|\s*':自动识别|前后的空格作为分隔符,无需提前处理日志格式--opprint:输出对齐的格式化表格wrap -f 3 -w:指定第三列(日志内容列)超过指定宽度时自动换行stdbuf -oL:强制行缓冲,避免管道内容被缓存导致延迟输出
方案2:GNU column(兼容你熟悉的column命令语法)
macOS自带的是BSD版本column,功能受限,替换为GNU版本即可解决流式输出和列内换行的问题。
- 安装方式(macOS环境):
brew install util-linux
GNU版本column安装后命令名为gcolumn,避免和系统自带版本冲突
- 使用命令:
tail -f log.log | stdbuf -oL gcolumn -t -s '|' -o ' | ' -W 3
参数说明:
-s '|':指定输入分隔符为|-o ' | ':指定输出分隔符为|-W 3:允许第三列内容超出宽度时自动换行
内容的提问来源于stack exchange,提问作者David McLean
相关产品推荐
相关产品推荐

