Хотите напечатать формат таблицы с несколькими строками в командной строке

Я хочу напечатать строку в формате таблицы с помощью sed или awk или любого другого в сценарии оболочки.

пример

Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 

Желаемый результат

 Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 

Если нет пустых строк, разделяющих группы (как до самого последнего редактирования вопроса), тогда для печати групп из четырех строк:

 $ awk '{a=a (length(a)?OFS:"") $0} NR>1 && NR%4==0{print a; a=""}' file Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 

Если существуют пустые строки, разделяющие группы строк для печати, тогда:

 $ awk '{a=a (length(a)?OFS:"") $0} !length($0){print a; a=""} END{print a}' file Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 

Если линии не имеют одинаковой длины,

  • начните с одного из представленных ответов до сих пор,
  • модифицируйте его, если необходимо, для разделения столбцов с вкладками (это предполагает, что в данных нет вкладок), и
  • вывести выход через column -t -s$'\t'

Например (если не считать пустых разделительных линий):

  $ cat file178492

 быстро
 коричневый
 лиса
 перескакивает

 ленивый
 собака.
 $ paste - - - - <файл178492
 Быстрая коричневая лиса
 прыгает через ленивую собаку.
                     # paste по умолчанию разделяет выходные столбцы с вкладками.
 $ paste - - - - <file178492 |  column -t -s $ '\ t'
 Быстрая коричневая лиса
 прыгает через ленивую собаку.
 $ awk '{a = a (a? OFS: "") $ 0} NR> 1 && NR% 4 == 0 {print a;  a = ""} 'file178492
 Быстрая коричневая лиса
 прыгает через ленивую собаку.
                     # указать -vOFS = $ '\ t' в awk для разделения полей вывода с вкладками.
 $ awk -vOFS = $ '\ t' '{a = a (a? OFS: "") $ 0} NR> 1 && NR% 4 == 0 {print a;  a = ""} 'file178492
 Быстрая коричневая лиса
 прыгает через ленивую собаку.
 $ awk -vOFS = $ '\ t' '{a = a (a? OFS: "") $ 0} NR> 1 && NR% 4 == 0 {print a;  a = ""} 'file178492 |  column -t -s $ '\ t'
 Быстрая коричневая лиса
 прыгает через ленивую собаку. 

Заметки:

  • $'…' – это багизм, который позволяет вводить управляющие символы в командах однозначно видимым и независимым от устройства способом. $'\t' указывает символ табуляции. Если вы не используете bash, а $'\t' не работает для вас, попробуйте просто ввести Tab или Ctrl + V , Tab . (Если они не работают, попробуйте Ctrl + I или Ctrl + V , Ctrl + I. )
  • Если вы хотите, чтобы ваши столбцы разделились больше места. добавьте -o' ' в команду column :
  $ paste - - - - <file178492 |  column -t -s $ '\ t' -o ''
 Быстрая коричневая лиса
 прыгает через ленивую собаку. 

Я предполагаю, что вы просто хотите распечатать сгруппированные разделы по одной строке, этот базовый скрипт awk должен это сделать.

 awk 'BEGIN{RS=""}{gsub("\n"," ");print}' test.txt