I have three files, each with id and value.
sdt5z@fir-s :~/test$ ls a.txt b.txt c.txt sdt5z@fir-s :~/test$ cat a.txt id1 1 id2 2 id3 3 sdt5z@fir-s :~/test$ cat b.txt id1 4 id2 5 id3 6 sdt5z@fir-s :~/test$ cat c.txt id1 7 id2 8 id3 9
I want to create a file that looks like this ...
id1 1 4 7 id2 2 5 8 id3 3 6 9
... it is advisable to use one command.
I know the connect and insert commands. The insert will duplicate the identifier column each time:
sdt5z@fir-s :~/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
The connection works well, but only for two files at a time:
sdt5z@fir-s :~/test$ join a.txt b.txt id1 1 4 id2 2 5 id3 3 6 sdt5z@fir-s :~/test$ join a.txt b.txt c.txt join: extra operand `c.txt' Try `join --help' for more information.
I also know that the insert can take STDIN as one of the arguments using "-". For example, I can replicate the connection command using:
sdt5z@fir-s :~/test$ cut -f2 b.txt | paste a.txt - id1 1 4 id2 2 5 id3 3 6
But I'm still not sure how to change this to accommodate three files.
Since I am doing this inside a perl script, I know that I can do something like putting this inside a foreach loop, something like join file1 file2> tmp1, join tmp1 file3> tmp2, etc. But this is getting messy, and I would like to do it with a single line interface.