如何从 bash 中的字符串中删除着色序列?
How to delete coloring sequences from string in bash?
我应该如何从 Bash 中的字符串中删除所有颜色控制序列(甚至所有不可打印的序列)?
例如,我有一个带有颜色开关的字符串:
a="\e[0;31m->\e0m"
如果我会回应它
echo -e "$a"
会打印两个彩色字符->
- 我想要得到的没有任何颜色的字符串。
在我的实际情况下,我正在脚本中构建彩色字符串,所以我不能将结果硬编码为常量,而且我不想将脚本的大小加倍来构建彩色和非彩色结果.
如果答案会删除所有的转义序列,而不仅仅是着色的,那就没问题了。字符串可以包含 Unicode。
$ a="\e[0;31m->\e0m"
$ echo $a | sed 's/\e[^m]*m//g'
->
是这样的吗?
我应该如何从 Bash 中的字符串中删除所有颜色控制序列(甚至所有不可打印的序列)?
例如,我有一个带有颜色开关的字符串:
a="\e[0;31m->\e0m"
如果我会回应它
echo -e "$a"
会打印两个彩色字符->
- 我想要得到的没有任何颜色的字符串。
在我的实际情况下,我正在脚本中构建彩色字符串,所以我不能将结果硬编码为常量,而且我不想将脚本的大小加倍来构建彩色和非彩色结果.
如果答案会删除所有的转义序列,而不仅仅是着色的,那就没问题了。字符串可以包含 Unicode。
$ a="\e[0;31m->\e0m"
$ echo $a | sed 's/\e[^m]*m//g'
->
是这样的吗?