如何在不截断的情况下打印多列?

如何在不截断的情况下打印多列?

我知道这pr -m -t file1 file2会给我两列,如下所示:

文件1:

a
abc
abcdefg
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

文件2:

1
123
12345678
12345678901234567890

-

$ pr -m -t file1 file2
a                   1
abc                 123
abcdefg                 12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

上面是字面上的剪切和粘贴,但在这里我添加了空格来显示它在终端中的实际排列方式:

$ pr -m -t file1 file2
a                                   1
abc                                 123
abcdefg                             12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

由于某种原因,unix堆栈交换并不能使代码块变得牢固。无论如何,我不需要行号匹配(但为了回答一般问题,您也可以回答如何做到这一点),但我想要的主要属性是使其行号换行而不是被截断。我是否别无选择,只能将每个文件预处理到一定的宽度并将其通过管道输入?如果是这样,我该怎么办?

更新:我想如果有一些command限制文件的宽度并强制换行,我会这样做:pr -m -t <(command file1) <(command file2)

答案1

编辑:

关心对齐吗?

如果你拿perl脚本发现这里,写者彼得·斯图伊赞德columnFix.perl,并命名它chmod u+x columnFix.perl(为了确保你可以执行它,你可以这样做:

pr -J -m -t file1 file2 | /path/to/columnFix.perl

原答案:

I的版本pr默认将行截断为 72 个字符,其中 2 列将第一列截断为 35 个字符(35 char/column * 2 columns) + 1 char/separator = 71 characters(因此第二列可能是 36 个字符)。

因此,如果您同意的话,您运行但使用 a 的相同命令-J应该可以执行您似乎正在寻找的操作(尽可能接近您的原始命令)没有列对齐(这与评论中建议的粘贴命令的结果类似)

pr -J -m -t file1 file2

从手册页:

-J, --连接线

合并整行,关闭 -W 行截断,没有列对齐, --sep-string[=STRING] 设置分隔符

相关内容