如何使用awk格式化go tool cover输出,修改首列同时保留其余内容对齐
解决方案
可以用awk配合printf固定宽度输出,或者结合column工具实现自动对齐,两种实现方式如下:
方案1:awk固定宽度对齐(最贴近原始输出格式)
go tool cover -func=coverage.out | awk ' # 单独处理total汇总行 /^total:/ { printf "%-32s %-24s %s\n", $1, $2, $3 next } # 处理普通文件行 { split($1, arr, "/") # 动态取路径最后两段,避免硬编码下标适配不同前缀路径 short_path = arr[length(arr)-1] "/" arr[length(arr)] printf "%-32s %-24s %s\n", short_path, $2, $3 } '
说明:%-32s代表左对齐占32字符宽度,%-24s代表左对齐占24字符宽度,可根据实际输出长度调整数值适配你的场景。
方案2:结合column工具自动对齐(更通用)
如果不想手动调整宽度,可以用column工具自动计算列宽对齐:
go tool cover -func=coverage.out | awk ' /^total:/ { print $0 next } { split($1, arr, "/") print arr[length(arr)-1] "/" arr[length(arr)] "\t" $2 "\t" $3 } ' | column -t -s $'\t'
两种方案输出均和预期效果完全一致。
内容的提问来源于stack exchange,提问作者akko
相关产品推荐
相关产品推荐

