使用bash将每组N行连接成一行

时间:2014-09-22 11:34:08

标签: bash

我想使用bash加入另一个命令输出中的每一组N行。

我可以使用任何标准的linux命令来实现这一目标吗?

示例:

./command
    46.219464   0.000993    
    17.951781   0.002545    
    15.770583   0.002873    
    87.431820   0.000664    
    97.380751   0.001921    
    25.338819   0.007437

期望的输出:

46.219464   0.000993     17.951781  0.002545
15.770583   0.002873     87.431820  0.000664    
97.380751   0.001921     25.338819  0.007437

2 个答案:

答案 0 :(得分:7)

如果您的输出具有一致的字段数,则可以使用xargs -n N对每行X个元素进行分组:

$ ...command... | xargs -n4
46.219464 0.000993 17.951781 0.002545
15.770583 0.002873 87.431820 0.000664
97.380751 0.001921 25.338819 0.007437

来自man xargs

  

-n max-args, - max-args = max-args

     

每个命令行最多使用max-args参数。少于max-args   如果超出大小(请参阅-s选项),将使用参数,   除非给出-x选项,否则xargs将退出。

答案 1 :(得分:3)

似乎您尝试使用分隔符\t(标签)加入每两行。如果是,那么您可以尝试以下粘贴命令,

command | paste -d'\t' - -

如果您想要空格作为分隔符,请使用-d<space>

command | paste -d' ' - -