Я пытаюсь проанализировать вывод команды, которая должна быть выведена на экран. В ней есть данные, разделенные последовательностями управления перемещением в исходное положение (для 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-подобный редактор для двоичных файлов
если вам нужен более конкретный ответ, мне нужен более конкретный пример программы