假設兩個列表具有不同的內容。爲了簡單起見,讓我們假設這些列表僅包含字母數字字符串。我想合併並將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 –