Ubuntu环境下用Awk实现表头展示并替代column --table-columns命令
解决Ubuntu下column --table-columns不兼容问题,改用Awk实现格式化输出
原命令依赖Kali中column命令的--table-columns参数,但Ubuntu自带的column版本(util-linux旧版)不支持该参数,以下是改用Awk实现需求的方案:
完整命令
awk -v Name="$Name" -F ':' ' BEGIN { # 定义表头,通过%-Ns设置左对齐列宽,可按需调整数值 printf "%-9s %-9s %-12s %s\n", "Number", "Type", "Capacity", "Status" } $1 == Name { # 输出匹配行:前4列按固定宽度对齐,最后一列保留原始空格内容 printf "%-9s %-9s %-12s %s\n", $2, $3, $4, substr($0, index($0,$5)) }' venue.txt
命令说明
- 参数传递:
-v Name="$Name"将Shell变量Name传入Awk,实现动态匹配目标行 - 字段分隔:
-F ':'直接以冒号为分隔符处理原始venue.txt,省去原命令中多次tr转换的冗余操作 - 表头输出:BEGIN块在处理文件前打印格式化表头,
%-Ns表示左对齐且占用N个字符宽度,可根据内容长度调整数值优化对齐效果 - 数据匹配与输出:仅处理第一列等于
Name的行,最后一列用substr($0, index($0,$5))提取从第5个字段开始的完整文本,避免长消息被拆分
测试效果(当Name=B时)
运行命令后输出:
Number Type Capacity Status B01 Random 6 This is a long message
对齐调整
如果需要更贴合需求的格式,只需修改printf中的宽度数值即可,比如把%-9s改成%-8s让列更紧凑,或把%-12s改成%12s让容量数字右对齐。
内容的提问来源于stack exchange,提问作者Dream
相关产品推荐
相关产品推荐

