헤더를 유지하면서 대용량 데이터 파일을 스크롤하는 방법

헤더를 유지하면서 대용량 데이터 파일을 스크롤하는 방법

수직 및 수평으로 화면을 가득 채우는 대용량 데이터 파일이 있다고 가정해 보겠습니다. 머리글 행이 화면에 남아 있는 동안 어떻게 파일을 찾아볼 수 있나요?

현재 저는 less -S파일을 수평 및 수직으로 멋지게 스크롤할 수 있도록 사용하고 있습니다. 그러나 아래로 스크롤하면 헤더 행이 눈에 띄게 사라집니다. 이러한 사용량을 줄일 수 있는 방법이 있나요?

또 다른 방법은 vim분할 화면 모드에서 사용하는 것 입니다 :set nowrap. 그러나 이제 가로로 스크롤하면 위쪽 창은 같은 방식으로 스크롤되지 않습니다( :windo set scrollbind내가 아는 한 세로 스크롤에서만 작동합니다).

답변1

스크롤 영역 설정을 지원하는 터미널에서:

tailf() ( # args: <file> [<number-of-header-lines>]
  trap 'tput csr 0 "$((LINES-1))"' INT
  tput csr "$((1+${2-1}))" "$((LINES-1))"
  tput clear
  {
    head -n"${2-1}"
    printf "%${COLUMNS}s\n" "" | tr ' ' =
    tail -n "$((LINES-1-${2-1}))" -f
  } < "$1"
)

zsh( 터미널의 크기에 따라 bash설정 및 변수를 설정 하거나 유사한 쉘이 있다고 가정합니다 .)$COLUMNS$LINES

답변2

vim에 익숙하다면 이것이 최선의 선택일 수 있습니다. 다음을 변경해야만 가로 스크롤 바인딩을 활성화할 수 있습니다 'scrollopt'.

set scrollopt=hor

따라서 vim -u NONE다음을 통해 원하는 동작을 얻을 수 있습니다.

:set scrollopt=hor
:set nowrap
:1split
:windo set scrollbind

건너뛴 열 수와 가장자리 건너뛰기 시작점으로부터의 거리를 개별적으로 조정 'sidescroll'하고 변경 해야 할 수도 있습니다 .'sidescrolloff'

답변3

이것을 시도하십시오 (설치해야합니다multitail):

multitail -du -t "$(head -n 1 filename)" filename

또는 한 줄보다 긴 제목의 경우:

multitail -wh 2 -l "head -n 2 filename" filename

파일 대신 명령 출력을 추적하려면 다음을 수행하십시오.

multitail -wh 2 -l "command | head -n 2" -l command

또는 -t적절하게 사용하십시오. 사용해야 할 수도 있습니다.unbuffer따라서 명령 출력이 즉시 나타납니다.

-D양식 상태 표시줄 표시를 비활성화 할 수 있습니다 -wh(양식의 목적에 어긋남 -t).

답변4

최첨단 버전에서는 less이 옵션을 통해 이를 지원합니다 --header.

덜 버전 603 릴리스 노트

버전 603은 2022년 3월 15일 베타 테스트를 위해 출시되었습니다.

버전 590과 버전 603의 차이점은 다음과 같습니다.

  • --header 옵션을 추가합니다.
  • --no-number-headers 옵션을 추가합니다.
  • --status-line 옵션을 추가합니다.
  • ...

원천:https://greenwoodsoftware.com/less/news.603.html

관련 정보