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

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

пример

Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 

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

 Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 

3 Solutions collect form web for “Хотите напечатать формат таблицы с несколькими строками в командной строке”

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

 $ 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 
  • Вставьте новую строку после разбитой последовательности чисел awk / unix / shell scripting
  • cron скрипт не может найти logwatch и chkrootkit
  • подключиться к удаленному серверу через ssh
  • Сценарий мобильного сайта пополнения счета
  • bash для выполнения чего-то, когда ключевое слово, увиденное на stdin
  • gnu параллельно с ffmpeg не обрабатывает первый файл
  • Получить текущий каталог скриптов (чтобы я мог включать файлы без относительных путей и запускать скрипт из разных источников)
  • Простая проблема, долго читайте: как перезаписать файл, находящийся на ESP при загрузке Linux
  • Запустить скрипт из графического интерфейса с выходом терминала
  • Как я могу использовать регулярное выражение для извлечения текста, следующего за двумя условиями, в переменную?
  • Измените некоторые файлы, чтобы добавить имя файла
  • Linux и Unix - лучшая ОС в мире.