In Unix, sometimes we come across situations where we need to join two files’ output side by side vertically. This is also referred to as vertical joining of files. In such situations, paste command comes handy. With the help of this command you not only can vertically join the files, but insert some delimiter as well.
Here is the brief illustration of paste command. Let’s take an example. Let’s say we have three files: objects, connection, properties. Just names. Nothing specific to Operating System. The contents of files are listed below.
wiw Labs:$ cat objects
Sun
Tree
Sky
Water
Night
Daywiw Labs:$ cat connection
is
is
is
is
is
iswiw Labs:$ cat properties
Red
Green
Blue
Colorless
Dark
Brightwiw Labs:$ cat atlast
O Really!!!
O Really!!!
O Really!!!
O Really!!!
O Really!!!
O Really!!!
Let’s see what happens when we use paste command. The general format of paste command is:
paste -d file1 file2 file3
wiw Labs:$ paste objects connection properties
Sun is Red
Tree is Green
Sky is Blue
Water is Colorless
Night is Dark
Day is Bright
By default, the paste command inserts a TAB in between corresponding rows from different files.
Now, let’s say we want to use the delimiter as a single space, then:
wiw Labs:$ paste -d ” ” objects connection properties
Sun is Red
Tree is Green
Sky is Blue
Water is Colorless
Night is Dark
Day is Bright
Now, this TAB becomes a single space. The delimiter can be only a single character.
Let’s see if we specify more than one delimiter in paste command:
wsd007:$ paste -d “;:>” objects connection properties atlast
Sun;is:Red>O Really!!!
Tree;is:Green>O Really!!!
Sky;is:Blue>O Really!!!
Water;is:Colorless>O Really!!!
Night;is:Dark>O Really!!!
Day;is:Bright>O Really!!!
Did you notice something strange? Yes. The first and second file will use first delimiter to join(semicolon in this case). The second and third file will take second delimiter to join(colon in this case). The third and fourth file will take the third delimiter to join(> in this case). And so on.
And last case, you can paste or join the outputs of other command also through pipe.
wiw Labs:$ cat objects|paste -d” ” – connection|paste -d ” ” – properties
Sun is Red
Tree is Green
Sky is Blue
Water is Colorless
Night is Dark
Day is BrightIf you notice, ‘-‘ is used as a place holder for the output of the command. For example, you see:
paste -d” ” – connection
so, “-” will be filled by the output of “cat objects”
Now see the opposite. The below output will clear your doubt:
wiw Labs:$ cat objects|paste -d” ” connection – |paste -d ” ” properties –
Red is Sun
Green is Tree
Blue is Sky
Colorless is Water
Dark is Night
Bright is Day
There are many more wonderful things which you can do with paste command. But, tips and tricks should not be lengthy article. I’ll be writing more in some other context. If you find any problems in your day to day activities, do write me and I’ll try to bring out the solution.