bash - 使用 sed 从字符串中删除 ANSI 代码
问题描述
给定以下字符串:
"foo\e[38;5;1mbar\e[0mbaz"
如何在不知道这些字符串中数字的确切值的情况下同时删除\e[38;5;19m
和使用 sed ?\e[0m
预期输出:
foobarbaz
我有以下 sed 行,它与第一个字符串匹配:
# regex: \\e\[[^/]*m
sed -E 's/\\e\[[^/]*m//g'
这返回sed: 1: unbalanced brackets ([])
。
如何摆脱数字未知的两个字符串?
解决方案
你非常亲近。这应该做的工作:
$ echo "foo\e[38;5;1mbar\e[0mbaz" | sed -E 's/\\e[^\\]*m//g'
# foobarbaz
推荐阅读
- r - Quantmod,getSymbols,提取开盘价,收盘价,R 中的交易量
- react-native - 反应导航抽屉不会保持打开状态
- d3.js - 空数据点的 Visx Linepath(d3 曲线)线性插值
- firebase - 使用条件显示后台通知 - Flutter
- python - 我正在尝试使用不和谐机器人使用 tweepy 自动发布推文
- python - Jinja2 模板包含来自父目录的另一个模板
- python - Python多参数问题
- reactjs - 如何让 Chart JS 忽略 DatasSets 之间的比例
- arrays - 检查两个对象是否相等 React Native
- python - 在检查函数中获取 __protected_call__