How to line up columns using paste(1)? or how to make an aligned table merging lines in the shell?

Posted by nn on Stack Overflow See other posts from Stack Overflow or by nn
Published on 2010-06-03T17:13:18Z Indexed on 2010/06/03 17:14 UTC
Read the original article Hit count: 196

Filed under:
|
|
|
|

Hi,

I want to merge lines such that the merged lines are aligned on the same boundary. UNIX paste(1) does this nicely when lines all meet at the same tab boundary, but when lines differ in size (in the file that lines are being merged into), the text comes out awkward.

Example of paste(1) that has the desired effect:

$ echo -e "a\nb\nccc\nd" | paste - -
a       b
ccc     d

Example of paste(1) with undesired effect:

$ echo -e "a\nb\ncccccccccccc\nd" | paste - -
a       b
cccccccccccc    d

Note how the 2nd column doesn't line up. I want 'b' to line up with 'd', which requires an additional tab. Unfortunately I believe this is the limit for the paste utility, so if anyone has any idea of how to get the desired effect above, I'd love to hear it.

© Stack Overflow or respective owner

Related posts about linux

Related posts about bash