You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清理script命令生成的typescript文件中的特殊字符?

解决script命令生成的typescript文件特殊字符问题

一、事前避免:启动script时直接减少特殊字符生成

直接指定极简终端类型,让终端不输出颜色、光标控制等特殊序列:

TERM=dumb script clean_session.log

TERM=dumb会让终端识别为不支持高级控制的哑终端,不会生成^[[?2004h这类功能切换序列、颜色代码等冗余内容,日志会更干净。

如果不需要script输出启动/结束的提示信息,可结合-q安静模式:

TERM=dumb script -q clean_session.log

二、事后处理:清理已生成的typescript文件

用组合命令一次性清理所有特殊字符:

col -b < typescript | sed -e 's/\x1b\[[0-9;]*m//g' -e 's/\x1b\[\?200[4-8][hl]//g' -e 's/\r$//' > cleaned_typescript

各部分作用:

  • col -b:去除退格符(H)和擦除序列([[K),修复输入时的删除痕迹
  • sed -e 's/\x1b\[[0-9;]*m//g':删除所有ANSI颜色控制序列(如^[[01;32m这类颜色代码)
  • sed -e 's/\x1b\[\?200[4-8][hl]//g':删除终端功能切换序列(如^[[?2004h/l)
  • sed -e 's/\r$//':删除行尾的^M回车符

Vim内直接清理的方法

如果习惯用Vim编辑,依次执行以下替换命令:

  1. 删除行尾的^M:
    :%s/\r$//g
    
  2. 删除ANSI颜色控制序列:
    :%s/\%x1b\[[0-9;]*m//g
    
  3. 删除终端功能切换序列:
    :%s/\%x1b\[\?200[4-8][hl]//g
    
  4. 删除退格+擦除的输入痕迹:
    :%s/\%x08\%x1b\[\[K//g
    

你之前在Vim里用:s/^M^/没效果,是因为语法错误——M对应回车符(`\r`),正确匹配应该是直接写`\r`或者用`Ctrl+V+M`插入M,不需要额外加^后缀。

内容的提问来源于stack exchange,提问作者Mathew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:25:03