如何使用粘贴(1)排列列? 或者如何使一个alignment的表在shell中合并行?

我想要合并行,使合并的行在同一个边界上alignment。 UNIX粘贴(1)在线条全部在相同的标签边界处相遇时很好地做到了这一点,但是当线条的大小不同(文本中的线条被合并到)时,文本变得笨拙。

具有所需效果的糊剂(1)的例子:

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

(1)有不良效果的例子:

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

注意第二列如何排列。 我想'B'排列'D',这需要一个额外的选项卡。 不幸的是,我相信这是粘贴工具的限制,所以如果任何人有任何想法如何得到预期的效果,我很乐意听到它。

查看实用程序…

 $ echo -e "a\nb\ncccccccccccc\nd" | paste - - | column -t ab cccccccccccc d 

您可以使用printf实用程序创建格式化的输出,使用与printf相同的格式说明符。 使用格式说明符,您可以指定最小字段宽度。 例如:

 printf "%30s%30s\n" "Alpha" "Bravo" 

查看答案这里有一个简单的方法来处理这个行时可能有空格或其他字符已经使用pr命令。 例如:

 pr -m -t -w 200 file1 file2