假设两个列表具有不同的内容。为了简单起见,让我们假设这些列表仅包含字母数字字符串。我想合并并将bash
中的两个列表垂直对齐。在bash中的不同内容列表的垂直对齐
user$ cat file1
foo
foo
bar
qux
user$ cat file2
foo
bar
bar
baz
qux
user$ sought_command file1 file2
foo foo
foo -
bar bar
- bar
- baz
qux qux
每行的值之间的分隔符(在此为一个空格)不需要由用户进行选择,但也可以是硬编码的。所以可以占位符差距(这里是一个短划线)。
编辑:
理想地,该命令不被限制于两个输入列表,但是可以采取任何数量的输入文件,每个比较指定的第一个。
user$ sought_command file1 file2 file2
foo foo foo
foo - -
bar bar bar
- bar bar
- baz baz
qux qux qux
乍一看,它看起来像'comm'可能是你需要的工具。您需要后处理输出以正确翻译缺失的字段。但是,它需要分类输入,因此它可能不是适用于该工作的正确工具,除非输出的顺序无关紧要。几乎可以肯定,需要'awk'(或Perl或Python,或...)。由于您的内容匹配需求,您不能使用“粘贴”。如果使用超过2个文件,使得Perl或Python比'awk'更适合,但如果你真的努力工作,你可能可以在'awk'中完成。 –
bash的哪个版本? – cdarke
@cdarke理想情况下,代码可以用于GNU bash 4.3.46 –