首页 > 解决方案 > 使用 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 ([])
如何摆脱数字未知的两个字符串?

标签: bashsed

解决方案


你非常亲近。这应该做的工作:

$ echo "foo\e[38;5;1mbar\e[0mbaz" | sed -E 's/\\e[^\\]*m//g'
# foobarbaz

推荐阅读