【问题标题】:Formatting lists with the column command in *nix使用 *nix 中的 column 命令格式化列表
【发布时间】:2012-08-26 19:08:04
【问题描述】:

我正在尝试格式化 bash 中的条目列表,并且正在使用 column 命令。但是,-t 选项默认使用任何空格作为分隔符,这不适用于我拥有的数据(它包含空格和制表符)。我不知道如何获取 -s 标志来指定换行符作为唯一的列分隔符。

【问题讨论】:

  • 你能发布一些示例输入和输出吗?
  • 请注意,column 在 Linux(和 Mac OS X 10.7.4)上可用。它不一定在 Unix 的其他变体上可用;例如,它没有被 POSIX 标准化。
  • 如果您想要 3 列输出,pr -l 1 -t -3 将非常接近您希望 column 生成的内容。对于 N 列,将 3 更改为 N;要指定宽度,请添加 -w 120 或其他任何内容。
  • pr -l 1 -t -3 完美运行!谢谢,乔纳森!我想我不太了解column 命令,如下图 ruakh 所示。

标签: linux bash shell unix formatting


【解决方案1】:

理论上,要指定换行符,您可以使用$'...' 表示法,这与'...' 类似,只是它支持C 样式的转义序列:

column -t -s $'\n' list-of-entries.txt

但是,我真的不明白这样做的目的。换行符是行分隔符,因此$'\n' 的列分隔符相当于根本没有任何列分隔符:

column -t -s '' list-of-entries.txt

这意味着输入将被视为只有一列;所以相当于根本不使用column

cat list-of-entries.txt

看起来你实际上想使用-t标志,因为-t标志的目的是确保每一行输入变成一行输出,听起来这不是你想要的。我猜你想要这个:

column list-of-entries.txt

它将list-of-entries.txt 的每一行视为要放入column 输出的表格的一个单元格中的值。

【讨论】:

  • 很好的解释,完全理解提问者遇到的真正问题!
  • 你正中头!感谢您的精彩解释!
【解决方案2】:

这可以输出一个漂亮的制表符分隔文件的打印版本

column -t -s $'\t' list-of-entries.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2017-07-12
    • 2021-08-19
    相关资源
    最近更新 更多