首页 > 解决方案 > 如何计算 xterm 控制序列的长度

问题描述

我希望在将文本传递给 stdout/console 之前对其进行格式化。要正确执行此操作,我需要知道给定的文本部分在打印到控制台后有多长时间,这需要知道由于它们是转义序列而不会打印多少字符。

在网上我找到了这些序列命令的多个文档,但似乎没有快速简便的方法来找出给定转义序列命令的结束位置,除非我要解析它们。在不解析的情况下获取任何转义序列命令的长度是否有技巧/解决方案?

How many characters is this \x1b[38;2;20;60;122m string \x1b[0m in console?

标签: linuxconsolextermvt100

解决方案


您可以使用ansifilter

$ printf '\x1b[38;2;20;60;122mabc\x1b[0m'  | ./ansifilter --no-trailing-nl | wc -c
3

推荐阅读