28

Standard cat concatenates files line by line (row by row, if you will). I find myself needing a horizontal cat command more and more often recently; i.e. a command that takes a list of files and concatenates them horizontally, column by column. So far I’ve used ad-hoc workarounds but I’d like to know if there exists a good solution for this.

To clarify, consider the following comparison between cat and hcat of two files:

$ cat a.dat 1.dat
a b
c d
1 2
3 4
$ hcat -s ' ' a.dat 1.dat
a b 1 2
c d 3 4

(Unlike for cat we need to specify a separator since by convention UNIX files don’t have a column separator at the end.)

4
  • 4
    So, I'm doing it wrong? us.123rf.com/400wm/400/400/ladyminnie/ladyminnie0809/…
    – Iszi
    Commented Dec 13, 2012 at 14:23
  • 1
    @Iszi In the C++ chat I actually wrote “in before longcat is long” when posting the link, to prevent precisely that :p Commented Dec 13, 2012 at 14:26
  • 1
    Ah, longcat! That's the search term I should have been looking for!
    – Iszi
    Commented Dec 13, 2012 at 14:28
  • 1
    Longcat is quite vertical though… and long.
    – poke
    Commented Dec 13, 2012 at 14:32

1 Answer 1

38

This sounds like a job for paste:

paste -d ' ' a.dat 1.dat

Output:

a b 1 2
c d 3 4
2
  • Perfect, thanks. That was easier than anticipated. Commented Dec 13, 2012 at 10:10
  • 1
    note that the default -d value is tab
    – XoXo
    Commented Jun 7, 2018 at 13:12

Not the answer you're looking for? Browse other questions tagged .