我正在尝试解析预期写入屏幕的命令的输出。它具有由移至原点控制序列分隔的数据(对于 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
处理问题的最简单方法:
- 您可以使用 'uuencode -m v' 或 'xxd' 转换所有控制序列
- 现在你可以像往常一样用 awk 进行文本处理
- 毕竟你可以通过 'uudecode -o -' 或 'xxd -revert' 进行转换
或者使用:bbe——一个类似 sed 的二进制文件编辑器
如果你需要更具体的答案我需要更具体的程序示例