Выход для вывода с символами новой строки

Я хотел бы сделать фиксированную высоту вывода из любой команды, используя трубопровод:

some_command | magic_command -40 

Если, например, some_command печатает 3 строки, magic_command должен добавить 37 новых строк,

  • Утилита командной строки для чтения файлов vCalendar
  • Получить список установленных принтеров
  • Список процессов как фоновый процесс
  • Функция CentOS 5.6 в режиме реального времени без многократного выполнения команды даты
  • Как я могу «перемотать» много сломанных символических ссылок?
  • Какие команды я могу использовать в терминале, чтобы найти программу, которая делает конкретную вещь?
  • или если some_command печатает 50 строк, magic_command должен сократить дополнительные строки (например, head -40)

  • Могут ли другие пользователи просмотреть аргументы, переданные команде?
  • Как исключить папки proc и sys из поиска с помощью команды find?
  • Получить номера строк для пустых строк
  • Укажите тип MIME для команды lpr CUPS
  • Объединить вывод команды вместе с входом
  • найти все конечные подкаталоги в дереве
  • 3 Solutions collect form web for “Выход для вывода с символами новой строки”

    POSIXly:

     { command; while :; do echo; done; } | head -n 40 

    В системе GNU:

     { command; yes ""; } | head -n 40 

    Использование awk:

     awk -vc=40 'NR>c{exit} 1; END{for(i=NR+1;i<=c;i++)print""}' 

    Как это работает

    • -vc=40

      Это определяет количество строк, которые мы хотим.

    • NR>c{exit}

      Если мы напечатали больше, чем c строк, то выйдите.

    • 1

      Это критическая стенограмма awk для печати строки.

    • END{for (i=NR+1; i<=c; i++) print ""}

      Если мы дошли до конца ввода, продолжаем печатать пустые строки, пока не будем читать в общей сложности c строк вывода.

    Примеры

    Для иллюстрации мы сокращаем желаемый результат до пяти строк:

     $ seq 2 | awk -vc=5 'NR>c{exit} 1; END{for(i=NR+1;i<=c;i++)print""}' 1 2 $ seq 10 | awk -vc=5 'NR>c{exit} 1; END{for(i=NR+1;i<=c;i++)print""}' 1 2 3 4 5 

    Можно использовать команду magic_command :

     #!/bin/bash #USAGE: Pass output of any command via ./magic.sh LINE_NUMBER i=$1 while ((i--)) ; do read && echo $REPLY || echo done 

    Примеры:

     seq 4 | ./magic.sh 3 1 2 3 seq 4 | ./magic.sh 6 1 2 3 4 - - 
    • «-» отметить пустую строку (строки)
    Linux и Unix - лучшая ОС в мире.