我有三個文件,每個文件都有一個ID和一個值。Unix加入兩個以上的文件
[email protected]:~/test$ ls
a.txt b.txt c.txt
[email protected]:~/test$ cat a.txt
id1 1
id2 2
id3 3
[email protected]:~/test$ cat b.txt
id1 4
id2 5
id3 6
[email protected]:~/test$ cat c.txt
id1 7
id2 8
id3 9
我想創建一個類似如下的文件...
id1 1 4 7
id2 2 5 8
id3 3 6 9
...最好使用一個命令。
我知道加入和粘貼命令。粘貼每次都會重複的ID列:
[email protected]:~/test$ paste a.txt b.txt c.txt
id1 1 id1 4 id1 7
id2 2 id2 5 id2 8
id3 3 id3 6 id3 9
加入效果很好,但在同一時間只有兩個文件:
[email protected]:~/test$ join a.txt b.txt
id1 1 4
id2 2 5
id3 3 6
[email protected]:~/test$ join a.txt b.txt c.txt
join: extra operand `c.txt'
Try `join --help' for more information.
我也知道這種糊可以採取STDIN爲一體通過使用「 - 」參數。例如,我可以使用以下命令來複制連接命令:
[email protected]:~/test$ cut -f2 b.txt | paste a.txt -
id1 1 4
id2 2 5
id3 3 6
但我仍然不確定如何修改此以容納三個文件。
因爲我在perl腳本中這樣做,我知道我可以做一些事情,比如把它放在一個foreach循環中,就像加入file1 file2> tmp1,加入tmp1 file3> tmp2等。但是這會變得凌亂,我想用一行代碼來做到這一點。
我也知道這是一個SQL內部連接的小菜一碟,但我不想先將所有這些加載到數據庫中。 – 2012-02-09 14:46:43