개행 문자를 사용한 패드 출력

개행 문자를 사용한 패드 출력

파이프를 사용하여 모든 명령에서 고정 높이를 출력하고 싶습니다.

some_command | magic_command -40

예를 들어 some_command가 3줄을 인쇄한다면 Magic_command는 37개의 줄 바꿈을 추가해야 합니다.

또는 some_command가 50줄을 인쇄하면 Magic_command는 추가 줄을 삭제해야 합니다(예: head -40).

답변1

POSIX적으로:

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

GNU 시스템에서:

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

답변2

awk를 사용하세요:

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

어떻게 작동하나요?

  • -v c=40

    이는 우리가 원하는 행 수를 정의합니다.

  • NR>c{exit}

    두 줄 이상을 인쇄했다면 c종료하세요.

  • 1

    이것은 awk로 라인을 인쇄하는 데 대한 비밀스러운 약어입니다.

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

    입력 끝에 도달하면 c출력의 총 줄 수를 읽을 때까지 빈 줄을 계속 인쇄합니다.

설명을 쉽게 하기 위해 필요한 출력을 5줄로 줄였습니다.

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



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

답변3

이것마법의 명령다음을 수행할 수 있습니다.

#!/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
-  
-  
  • «-»는 빈 줄을 표시합니다.

관련 정보