How To Join Two Files Vertically

April 12th, 2009

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
Day

wiw Labs:$ cat connection
is
is
is
is
is
is

wiw Labs:$ cat properties
Red
Green
Blue
Colorless
Dark
Bright

wiw 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 Bright

If 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.

Tags: , , , , , , , , ,
Posted in Tips and Tricks | No Comments »

Comments

Leave a Reply

 Comment Form 

 



More articles from the category: Tips and Tricks


What is The Difference Between exec and xargs

There are very small things in linux based systems which often consfuse the users. Here in this article I’m going to discuss the specific use of find command and difference between exec and xargs.

Understanding The diff Command In Unix

It’s not an uncommon requirement for Unix system administrators to know the difference between two files. The diff command in Unix serves the purpose. Here I am going to discuss the diff command. It’s quite common but little understood command. I hope after reading this article, the Unix visitors will be able to understand the usage properly and benefit from it. Here you go…

How To Find Common Lines Between Two Text Files In Unix

Those working in Unix environment must be aware of the requirement to find common
lines between two Unix files. In this article I’m gonna introduce you to solve this problem.

How To Join Two Files Vertically

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….

How To Recover A Superblock

If fsck or mount commands give errors then pretty good chances are there that the superblock is corrupt. The dd command comes to rescue. We know that the superblock resides in 31st block also. So, to recover that we use the following command: # dd count=1 bs=4k skip=31 seek=1 if=/dev/my_lv  of=/dev/my_lv count: How many blocks […]

Ways To Zip The Directory Structure of Unix

Often its the requirement of system administrators to move the directories in between the servers. Also the confusion arises which utility to use for the best results. Normally zip, tar, cpio utilities are used the most. I’m writing a short introduction of zip and tar.

How To Split or Cut A File Vertically(Column wise)

In Unix environment it’s often required to print specific columns from a file. If the rows of file are having some proper delimiters then other Unix command like awk come into picture and quite handy. But if say you want to print out the 5th character and then 7th to 16th character, then other commands fail and in such situations the cut command comes to rescue. Here is short primer of cut command.