답변:
이 Perl 매직 조각을 사용해보십시오.
perl -ne 's/\x1b[[()=][;?0-9]*[0-9A-Za-z]?//g;s/\r//g;s/\007//g;print' < screenlog.0
ansifilter를 사용하십시오.
ansifilter screenlog.txt > screenlog.txt.clean
brew install ansifilter
하고 있으며 매력처럼 작동했습니다.
screenlog.n에서 세션을 캡처하면 파일을 터미널에 넣은 다음 screen의 hardcopy 명령을 사용하여 cat 출력을 파일로 덤프 할 수 있습니다. 결과는 이스케이프 시퀀스가없는 깨끗한 출력을 제공합니다.
유일한 'gotcha'는 하드 카피가 스크롤 백 버퍼의 모든 것을 캡처하고 스크롤 백 버퍼에 캡처하려는 내용 만 포함하는지 확인하는 것 같습니다.
1. $ screen
2. $ cd /path/to/screenlog.n directory/
3. $ wc -l screenlog.n
4. $ screen -X scrollback 245 # 245 is the number of lines found from your wc command + 5
5. $ cat screenlog.n
6. $ screen -X hardcopy -h screenlog.n.cleaned
-h를 사용하면 즉각적인 내용뿐만 아니라 전체 스크롤 백 기록을 캡처 할 수 있습니다.
screenlog.n.cleaned 파일에는 cat 출력의 하드 카피가 포함되며 이스케이프 시퀀스는 포함되지 않습니다.
wc -l
이 저에게 효과가 없었습니다. 28226을 반환했지만 실제로는 33031이 필요했습니다.
screen
사용자 인 경우 Joel Verks의 게시물에서 제안한 화면 하드 카피 솔루션은 다음과 같이 큰 스크롤 백이 정의되어 있다고 가정하면 가장 효과적입니다 .screenrc
.
defscrollback 10000
그럼 당신은 할 것입니다 :
screenlog
파일을 표시하십시오 .
$ cat screenlog.<screen_window_num>
hardcopy -h
현재 창 내용과 스크롤 백 버퍼를 hardcopy.#
파일 에 저장 하려면 (화면 맨 페이지 참조)를 사용 하십시오.
<Escape key> (Ctrl-a by default)
:hardcopy -h