回答:
次の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
していますが、使用してみたところ、魅力的に機能しました。
また、-rまたは-Rオプションのlessを試してください。
less -r screenlog.0
screenlog.nでセッションをキャプチャしたら、ファイルを端末にcatし、screenのhardcopyコマンドを使用してcatの出力をファイルにダンプできます。その結果、エスケープシーケンスのないクリーンな出力が得られます。
唯一の「落とし穴」は、ハードコピーがスクロールバックバッファーのすべてをキャプチャし、スクロールバックバッファーにキャプチャしたいものだけが含まれるようにすることです。
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
(画面のmanページを参照)、現在のウィンドウの内容とそのスクロールバックバッファーをhardcopy.#
ファイルに保存します。
<Escape key> (Ctrl-a by default)
:hardcopy -h