Необходимо проанализировать таблицу двойного входа с двумя парами

У меня есть эта таблица с двумя входами в результате вывода программы:

Variable1 : Value1 Variable2 : Value2 Variable3 : Value3 Variable4 : Value4 Variable5 : Value5 Variable6 : Value6 Variable7 : Value7 

Мне нужно извлечь и первую, и пятую пару, что я делаю с grep:

 $ {program command} | grep -e Variable1 -e Variable5 

в результате чего этот результат:

 Variable1 : Value1 Variable5 : Value5 

Проблема здесь в том, что мне нужны обе пары в одной строке, но команда grep -e печатает LF / CR после каждого -e; Мне нужны четыре пары в одной строке, чтобы сделать окончательный сортировку на основе размера файла. Я думаю, что могу сделать это в awk или perl из той же командной строки, но, увы, я все еще несколько зеленые с ними.

Есть идеи? Заранее спасибо.

Если вы просто хотите присоединиться к строкам, используйте tr для удаления новой строки:

 $ {program command} | grep -e Variable1 -e Variable5 | tr -d '\n' 

Сделать все это в awk :

 $ {program command} | awk '/Variable[15]/ { printf("%s ", $0) }' 

То же самое в sed :

 $ {program command} | sed -n '/Variable[15]/H; $ { x; s/\n/ /g; p }' 

Если вы просто хотите присоединиться к обеим линиям из grep, самый простой способ – fmt через fmt .

 $ {program command} | grep -e Variable1 -e Variable5 | fmt 

Если строки слишком длинны, используйте параметр -w LINELENGTH для fmt.

Вы можете удалить новую строку путем замены Perl

 perl -ne 's/\n/ /; print if /Variable[15]/' 

Если вам нужна новая строка в конце, добавьте

 perl -ne 's/\n/ /; print if /Variable[15]/ }{ print "\n"'