bash - 使用特殊字符删除 sed 中的特定字符范围
问题描述
我试图整理的回应是:
ServerID 响应:142[90m[39mtestRuntime
我正在尝试以下列方式使其格式化
ServerID 响应:142 测试运行时
我相信 [90m 和 [39 是来自另一个 CLI 工具的一些控制字符,因为当我不添加时它们显示为空格:
tr -dc '[:print:]
在回显响应之前。
我已经构建了以下 sed 命令,但它在 testRuntime 中删除了一个额外的 M:
tr -dc '[:print:]' | sed 's/[\<\[90m\[39m\>]//g'
我将如何制作包含特殊字符的精确匹配命令,但前提是整个序列匹配?
提前致谢
解决方案
外部方括号[\<\[90m\[39m\>]
形成一个括号表达式,它匹配其中定义的单个字符。仅删除括号并不能解决您正在使用的问题,\<
并且\>
不打算在此处使用的单词边界因为[90m[39m
必须在任何上下文中删除。
利用
sed 's/\[90m\[39m//g'
这将删除文件中任意位置的任意数量的[90m[39m
行。
推荐阅读
- javascript - 我将如何创建一个平滑的“幻灯片”来在屏幕上和屏幕外移动项目?
- oauth-2.0 - 当您有多个使用同一个用户池的应用程序(web/mobil)时,需要多少个 AWS Cognito 应用程序客户端,每个应用程序都有自己的后端应用程序。?
- sql - 联合所有的 SQL 唯一 ID - Sybase
- kubernetes - 同网多集群Mesh场景下Istio如何访问服务
- react-native - Android 更新后会打开我的 Expo App 的旧版本
- django - 如何在 Django 中访问旧数据库而不在其中创建新表
- php - 用惯用的 Perl 模拟 PHP 的 array_keys 函数
- php - 无法连接到数据库。主连接 [MySQLi]:用户 @ 的访问被拒绝(使用密码:是)
- vue.js - 赛普拉斯 Vue 组件测试从挂载发出的事件
- flutter - Get(Uri.http) does not working in flutter when get WorldTime API