Merging two text files side by side

Hi everyone,

I need to merge two files side by side

The files look something like this:

HOSTNAME
 fishtornado-K52F 127.0.1.1
UPTIME
 20:17:01 up 2:19, 3 users, 
 load average: 0.00, 0.04, 0.05
DISK USAGE
 (Size/Used/Avail/Use%)
 29G 6.5G 21G 25%
RUN QUEUE
  PID COMMAND         USER     %CPU %MEM
 2035 chromium-browse 1000      3.1 10.8
 1955 chromium-browse 1000      1.9  2.5
 1708 gnome-shell     1000      1.5  2.5
 1195 Xorg            root      1.3  0.6
 2614 chromium-browse 1000      1.0  1.5

The desirable output would be something similar to this:

HOSTNAME	                                HOSTNAME
 fishtornado-K52F 127.0.1.1	                 fishtornado-K52F 127.0.1.1
UPTIME	                                        UPTIME
 21:06:05 up 3:08, 3 users, 	                 21:06:08 up 3:08, 3 users, 
 load average: 0.05, 0.04, 0.05	                 load average: 0.05, 0.04, 0.05
DISK USAGE	                                DISK USAGE
 (Size/Used/Avail/Use%)	                         (Size/Used/Avail/Use%)
 29G 6.5G 21G 25%	                         29G 6.5G 21G 25%
RUN QUEUE	                                RUN QUEUE     
  PID COMMAND         USER     %CPU %MEM          PID COMMAND         USER     %CPU %MEM
 2035 chromium-browse 1000      2.5  9.5	 2035 chromium-browse 1000      2.5  9.5
 1955 chromium-browse 1000      2.3  2.6	 1955 chromium-browse 1000      2.3  2.6
 4584 chromium-browse 1000      2.2  1.9	 4584 chromium-browse 1000      2.2  1.9
 1708 gnome-shell     1000      1.6  2.5	 1708 gnome-shell     1000      1.6  2.5
 1195 Xorg            root      1.4  0.6	 1195 Xorg            root      1.4  0.6

I tried using the paste command and various awk scripts but the rows always came out to be scrambled.

Like this (result of paste):

HOSTNAME	HOSTNAME
 fishtornado-K52F 127.0.1.1	 fishtornado-K52F 127.0.1.1
UPTIME	UPTIME
 21:06:05 up 3:08, 3 users, 	 21:06:08 up 3:08, 3 users, 
 load average: 0.05, 0.04, 0.05	 load average: 0.05, 0.04, 0.05
DISK USAGE	DISK USAGE
 (Size/Used/Avail/Use%)	 (Size/Used/Avail/Use%)
 29G 6.5G 21G 25%	 29G 6.5G 21G 25%
RUN QUEUE	RUN QUEUE
  PID COMMAND         USER     %CPU %MEM	  PID COMMAND         USER     %CPU %MEM
 2035 chromium-browse 1000      2.5  9.5	 2035 chromium-browse 1000      2.5  9.5
 1955 chromium-browse 1000      2.3  2.6	 1955 chromium-browse 1000      2.3  2.6
 4584 chromium-browse 1000      2.2  1.9	 4584 chromium-browse 1000      2.2  1.9
 1708 gnome-shell     1000      1.6  2.5	 1708 gnome-shell     1000      1.6  2.5
 1195 Xorg            root      1.4  0.6	 1195 Xorg            root      1.4  0.6

Thank you in advance for your help.

The following example was done with only one sample file. In your case, you would not re-use filenames -- your paste command would be files __32a and __33 (for instance).

$ cat sample32.txt
Received message from [https://www.abc.zzz] in [939] milliseconds.
Received message from [https://www.abc.zzz] in [981] milliseconds.
Received message from [https://www.abc.zzz] in [447] milliseconds.
Received message from [https://www.abc.zzz] in [93] milliseconds.
Received message from [https://www.abc.zzz] in [123] milliseconds.
Received message from [https://www.abc.zzz] in [124] milliseconds.
Received message from [https://www.abc.zzz] in [89] milliseconds.
Received message from [https://www.abc.zzz] in [124] milliseconds.
Received message from [https://www.abc.zzz] in [103] milliseconds.
Received message from [https://www.abc.zzz] in [167] milliseconds.
Received message from [https://www.abc.zzz] in [179] milliseconds.
Received message from [https://www.abc.zzz] in [2498] milliseconds.
Received message from [https://www.abc.zzz] in [2505] milliseconds.

$ awk '{printf "%-90s\n",$0}' <sample32.txt >sample32a.txt


$ paste sample32a.txt sample32.txt
Received message from [https://www.abc.zzz] in [939] milliseconds.          Received message from [https://www.abc.zzz] in [939] milliseconds.
Received message from [https://www.abc.zzz] in [981] milliseconds.          Received message from [https://www.abc.zzz] in [981] milliseconds.
Received message from [https://www.abc.zzz] in [447] milliseconds.          Received message from [https://www.abc.zzz] in [447] milliseconds.
Received message from [https://www.abc.zzz] in [93] milliseconds.           Received message from [https://www.abc.zzz] in [93] milliseconds.
Received message from [https://www.abc.zzz] in [123] milliseconds.          Received message from [https://www.abc.zzz] in [123] milliseconds.
Received message from [https://www.abc.zzz] in [124] milliseconds.          Received message from [https://www.abc.zzz] in [124] milliseconds.
Received message from [https://www.abc.zzz] in [89] milliseconds.           Received message from [https://www.abc.zzz] in [89] milliseconds.
Received message from [https://www.abc.zzz] in [124] milliseconds.          Received message from [https://www.abc.zzz] in [124] milliseconds.
Received message from [https://www.abc.zzz] in [103] milliseconds.          Received message from [https://www.abc.zzz] in [103] milliseconds.
Received message from [https://www.abc.zzz] in [167] milliseconds.          Received message from [https://www.abc.zzz] in [167] milliseconds.
Received message from [https://www.abc.zzz] in [179] milliseconds.          Received message from [https://www.abc.zzz] in [179] milliseconds.
Received message from [https://www.abc.zzz] in [2498] milliseconds.         Received message from [https://www.abc.zzz] in [2498] milliseconds.
Received message from [https://www.abc.zzz] in [2505] milliseconds.         Received message from [https://www.abc.zzz] in [2505] milliseconds.

1 Like

Read line from file1 then read line from file2Strcat the two to one line and output to file3
Rinse and repeat until eof

-Chris

1 Like
awk '{getline p<f; printf "%50-s%50-s\n",$0,p}' f=file2 file1
1 Like

Thank you for the quick replies, this was exactly what I was looking for :slight_smile: