ฉันพบวิธีที่ดีที่จะทำ ในระบบของฉันบรรทัดเอาท์พุทที่ยาวจะถูกโรยด้วย "^ M" (พื้นที่ว่างตามด้วย carriage return) "^ M" สามารถถูกแทนที่อย่างดีด้วยอักขระโมฆะ "^ @" ซึ่งไม่แสดงเลยเมื่อคุณ cat ไฟล์
ฉันจับเวลาด้วยดังนั้นเพื่อที่จะเล่นไฟล์ซ้ำได้อย่างสมบูรณ์แบบฉันไม่สามารถลบ "^ M" ได้อย่างสมบูรณ์โดยใช้คำสั่งด้านล่าง (เพราะ scriptreplay นับจำนวนไบต์):
tr '\r' '\0' | sed 's/ \x0//g'
ฉันเรียกใช้คำสั่งสคริปต์ของฉันเช่นนี้:
script -t -f session.log 2>timing
ดังนั้นสิ่งที่ฉันทำภายหลังคือ:
cat session.log | tr '\r' '\0' > typescript
scriptreplay -t timing | sed 's/ \x0//g'
การแก้ไขครั้งแรก (ก่อนเล่นซ้ำ) จะรักษาจำนวนไบต์ในไฟล์ การแก้ไขครั้งที่สอง (หลังจากเล่นซ้ำ) จะกำจัดพื้นที่สีขาวในที่สุ่ม (โปรดทราบว่าโดยค่าเริ่มต้น scriptreplay ค้นหาไฟล์อินพุตชื่อ "typescript" ซึ่งเป็นเหตุผลที่ฉันไม่ได้ให้มันหลังจาก "เวลา")