![Разбор по управляющим символам](https://rvso.com/image/1338178/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80%20%D0%BF%D0%BE%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%BC%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B0%D0%BC.png)
Я пытаюсь проанализировать вывод команды, которая должна быть выведена на экран. В ней есть данные, разделенные последовательностями управления перемещением в исходное положение (для VT220, ESC[1;1H). Мне нужна только последняя часть (т. е. после последнего перемещения в исходное положение).
Я пробовал сделать это разными способами (в основном с помощью awk и sed), но проблема всегда в том, что части управляющей последовательности имеют особое значение (для программы, а не только для оболочки), и я не могу заключить их в кавычки, когда подставляю вывод 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-подобный редактор для двоичных файлов
если вам нужен более конкретный ответ, мне нужен более конкретный пример программы