특정 숫자에 도달할 때까지 스트림에 새 행을 추가합니다.

특정 숫자에 도달할 때까지 스트림에 새 행을 추가합니다.

저는 pacman.log에서 오늘 업데이트된 패키지를 검색하고 이를 conky 문자열로 변환하는 다음 명령을 사용하고 있습니다.

tail -500 /var/log/pacman.log | grep -e "\[$(date +"%Y-%m-%d") [0-5][0-9]:[0-9][0-9]\] \[ALPM\] upgraded" | sed 's/^.*\([0-2][0-9]:[0-5][0-9]\).*upgraded \([^ ]*\).*/${color2}\2${goto 250}${color1}\1/' | tail -18

tail -18을 사용하는 경우 최대 행 수는 18입니다.

스트림에 항상 18줄이 있도록 새 줄을 추가하는 가장 좋은 방법은 무엇입니까?

답변1

다음을 수행할 수 있습니다( 또는 {x..y}와 같은 zsh의 중괄호 확장 형식을 지원하는 셸 사용 zsh).bashksh93yash -o braceexpand

{
  printf '%.0s\n' {1..18}
  your-command
} | tail -n 18

참고하시기 바랍니다접두사줄을 추가하는 대신 줄바꿈하세요. 연결하려면 다음을 수행할 수 있습니다.

your-command | tail -n 18 | awk '{print};END{while (NR++ < 18) print ""}'

답변2

bashC 스타일 루프를 사용할 수 있습니다 .

other_command | for((i=0;i<18;i++)); do IFS= read -r line; printf '%s\n' "$line";done

하지만 없으면 Stéphane Chazelas가 제안한 방법을 bash사용하세요 .awk

관련 정보