linux - 如何计算 xterm 控制序列的长度
问题描述
我希望在将文本传递给 stdout/console 之前对其进行格式化。要正确执行此操作,我需要知道给定的文本部分在打印到控制台后有多长时间,这需要知道由于它们是转义序列而不会打印多少字符。
在网上我找到了这些序列命令的多个文档,但似乎没有快速简便的方法来找出给定转义序列命令的结束位置,除非我要解析它们。在不解析的情况下获取任何转义序列命令的长度是否有技巧/解决方案?
How many characters is this \x1b[38;2;20;60;122m string \x1b[0m in console?
解决方案
您可以使用ansifilter:
$ printf '\x1b[38;2;20;60;122mabc\x1b[0m' | ./ansifilter --no-trailing-nl | wc -c
3
推荐阅读
- java - Is-a 和 Has-a 映射外键的问题
- php - 如何用 PHP 显示 blob?
- angular - Angular CLI 找不到明确在工作区中的模块
- applescript - UI 自动化,appleScript 非菜单项的键盘快捷键预览?
- kubernetes - 如何在 pod 重新创建后保留最新的队列
- javascript - 将 MDL 与 ASP.NET Blazor 一起使用
- javascript - 仅当标志为真时才应显示字符串,但如果标志为假,则将标志添加到字符串中
- ruby-on-rails - Ruby 类名解析中的歧义
- ios - Peek & pop 不会仅在最后一个单元格上触发
- java - 如何使用 Thymeleaf 在 Java Spring 中创建一个简单的表单