我知道这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] 设置分隔符