เป็นไปได้ไหมที่จะลบลำดับ ESC ในไฟล์เอาต์พุตของหน้าจอ GNU สิ่งต่าง ๆ เช่นสีแท็บและอักขระการหลบหลีกอื่น ๆ เข้าไปในแฟ้มบันทึกและถอดรหัสได้ยาก
ฉันลองดร. Google & amp; จำกัด รวมทั้งอ่านคู่มือ แต่ไม่สามารถหาสิ่งที่เหมาะสม ...
บางทีฉันอาจมองข้ามบางสิ่ง
เป็นไปได้ไหมที่จะลบลำดับ ESC ในไฟล์เอาต์พุตของหน้าจอ GNU สิ่งต่าง ๆ เช่นสีแท็บและอักขระการหลบหลีกอื่น ๆ เข้าไปในแฟ้มบันทึกและถอดรหัสได้ยาก
ฉันลองดร. Google & amp; จำกัด รวมทั้งอ่านคู่มือ แต่ไม่สามารถหาสิ่งที่เหมาะสม ...
บางทีฉันอาจมองข้ามบางสิ่ง
คำตอบ:
ลองใช้ Perl เพิร์ลชิ้นนี้:
perl -ne 's/\x1b[[()=][;?0-9]*[0-9A-Za-z]?//g;s/\r//g;s/\007//g;print' < screenlog.0
ลองใช้ตัวเลือก -r หรือ -R น้อยกว่า
less -r screenlog.0
ใช้ ansifilter
ansifilter screenlog.txt > screenlog.txt.clean
brew install ansifilter
และมันใช้งานได้อย่างมีเสน่ห์
เมื่อคุณบันทึกเซสชั่นของคุณใน screenlog.n คุณสามารถ cat ไฟล์ไปยัง terminal แล้วใช้คำสั่ง hardcopy ของหน้าจอเพื่อดัมพ์เอาต์พุตของ cat ไปยังไฟล์ ผลลัพธ์จะให้ผลลัพธ์ที่สะอาดซึ่งไม่มีลำดับการหลีกเลี่ยงใด ๆ
ดูเหมือนว่า 'gotcha' เพียงอย่างเดียวเพื่อให้แน่ใจว่า hardcopy จับภาพทุกสิ่งใน buffer scrollback และบัฟเฟอร์ scrollback มีเฉพาะสิ่งที่คุณต้องการดักจับ
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 จริงๆในกรณีของฉัน
ฉันใช้ strings
คำสั่งเพื่อให้อ่านบันทึกหน้าจอ ภายใต้ Debian มันเป็นส่วนหนึ่งของแพ็คเกจ binutils
ในฐานะที่เป็นหน้าคนพูดว่า:
strings - ค้นหาสตริงที่พิมพ์ได้ ในวัตถุหรือไฟล์ไบนารีอื่น ๆ
ถ้าคุณคือ screen
ผู้ใช้แล้ว หน้าจอปกแข็ง ทางออกที่แนะนำโดย โจเอล
โพสต์ของ Verks จะทำงานได้ดีที่สุดสมมติว่าคุณมี scrollback ขนาดใหญ่
กำหนดไว้ในของคุณ .screenrc
:
defscrollback 10000
แล้วคุณจะทำ:
แสดงของคุณ screenlog
ไฟล์:
$ cat screenlog.<screen_window_num>
ใช้ hardcopy -h
(ดูหน้าคนหน้าจอ) เพื่อบันทึกเนื้อหาหน้าต่างปัจจุบัน
และบัฟเฟอร์การเลื่อนลงใน hardcopy.#
ไฟล์:
<Escape key> (Ctrl-a by default)
:hardcopy -h