Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to paste columns from separate files using bash?

Using the following data:

$cat date1.csv  Bob,2013-06-03T17:18:07  James,2013-06-03T17:18:07  Kevin,2013-06-03T17:18:07  $cat date2.csv  2012-12-02T18:30:31  2012-12-02T18:28:37  2013-06-01T12:16:05 

How can date1.csv and date2.csv files be merged? Output desired:

$cat merge-date1-date2.csv  Bob,2013-06-03T17:18:07,2012-12-02T18:30:31  James,2013-06-03T17:18:07,2012-12-02T18:28:37  Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05 

Please note: the best solution will be able to quickly manage a massive number of lines.

like image 685
blehman Avatar asked Jun 04 '13 04:06

blehman


1 Answers

You were on track with paste(1):

$ paste -d , date1.csv date2.csv  Bob,2013-06-03T17:18:07,2012-12-02T18:30:31 James,2013-06-03T17:18:07,2012-12-02T18:28:37 Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05 

It's a bit unclear from your question if there are leading spaces on those lines. If you want to get rid of that in the final output, you can use cut(1) to snip it off before pasting:

 $ cut -c 2- date2.csv | paste -d , date1.csv -   Bob,2013-06-03T17:18:07,2012-12-02T18:30:31   James,2013-06-03T17:18:07,2012-12-02T18:28:37   Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05 
like image 158
Carl Norum Avatar answered Sep 18 '22 13:09

Carl Norum