一尘不染

并排显示两个文件

linux

不同长度的2个未排序文本文件如何可以是由侧显示侧 (在列) 在一个shell

给定one.txttwo.txt

$ cat one.txt
apple
pear
longer line than the last two
last line

$ cat two.txt
The quick brown fox..
foo
bar 
linux

skipped a line

显示:

apple                               The quick brown fox..
pear                                foo
longer line than the last two       bar 
last line                           linux

                                    skipped a line

paste one.txt two.txt几乎可以解决问题,但是并不能很好地对齐列,因为它仅在列1和列2之间打印一个标签。
我知道如何使用emacs和vim做到这一点,但希望将输出显示为stdout以用于管道等。

我想出的解决方案使用sdiff,然后通过管道进行sed删除,以sdiff增加输出。

sdiff one.txt two.txt | sed -r 's/[<>|]//;s/(\t){3}//'

我可以创建一个函数并将其粘贴在我的函数中,.bashrc但是肯定已经存在一个命令(或者可能存在 更干净的 解决方案)?


阅读 190

收藏
2020-06-03

共1个答案

一尘不染

您可以使用标记来合并文件(每列一个),并省略标题(例如)pr来执行此操作。-m``-t

pr -m -t one.txt two.txt

输出:

apple                               The quick brown fox..
pear                                foo
longer line than the last two       bar
last line                           linux

                                    skipped a line
2020-06-03