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
    So, I'm doing it wrong? us.123rf.com/400wm/400/400/ladyminnie/ladyminnie0809/… – Iszi Dec 13 '12 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 – Konrad Rudolph Dec 13 '12 at 14:26
  • 1
    Ah, longcat! That's the search term I should have been looking for! – Iszi Dec 13 '12 at 14:28
  • 1
    Longcat is quite vertical though… and long. – poke Dec 13 '12 at 14:32

This sounds like a job for paste:

paste -d ' ' a.dat 1.dat


a b 1 2
c d 3 4
  • Perfect, thanks. That was easier than anticipated. – Konrad Rudolph Dec 13 '12 at 10:10
  • 1
    note that the default -d value is tab – Jeff Xiao Jun 7 '18 at 13:12

Not the answer you're looking for? Browse other questions tagged or ask your own question.