2014-09-22 3 views
1

Я хотел бы присоединиться к каждой группе из N строк в выводе другой команды, используя bash.Объединение каждой группы из N строк в одну с bash

Есть ли какие-либо стандартные команды 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 

ответ

5

Если выход имеет постоянное число полей, вы можете использовать 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

Использование в большинстве макс-Args аргументы в командной строке. Менее макс-args аргументы будут использоваться, если размер (см. Параметр -s) превышен, , если не указана опция -x, и в этом случае xargs выйдут.

1

Похоже, вы пытаетесь объединить все две строки с разделителем \t (вкладка). Если да, то вы можете попробовать команду ниже пасты,

command | paste -d'\t' - - 

Если вы хотите пространство в качестве разделителя используйте -d<space>,

command | paste -d' ' - - 
Смежные вопросы