按控制字符解析

按控制字符解析

我正在尝试解析预期写入屏幕的命令的输出。它具有由移至原点控制序列分隔的数据(对于 VT220,ESC[1;1H)。我只需要最后一部分(即最后一次移至原点之后)。

我曾尝试用多种方式(主要是 awk 和 sed)来实现这一点,但问题始终是控制序列的某些部分具有特殊含义(对程序而言,而不仅仅是对 shell 而言),而当我替换 tput 的输出时,我无法引用它们。

有什么建议么?

编辑:

下面是我想要解析的一个示例(ESC转义字符):

Page 1; line 1
Page 1; line 2
ESC[1;1HPage 2; line 1
Page 2; line 2
ESC[1;1HPage 3; line 1
Page 3; line 2

我希望获得以下内容,即程序运行后在终端上显示的内容。

Page 3; line 1
Page 3; line 2

答案1

处理问题的最简单方法:

  1. 您可以使用 'uuencode -m v' 或 'xxd' 转换所有控制序列
  2. 现在你可以像往常一样用 awk 进行文本处理
  3. 毕竟你可以通过 'uudecode -o -' 或 'xxd -revert' 进行转换

或者使用:bbe——一个类似 sed 的二进制文件编辑器

如果你需要更具体的答案我需要更具体的程序示例

相关内容