화면에 쓸 것으로 예상되는 명령의 출력을 구문 분석하려고 합니다. 원점 이동 제어 시퀀스로 구분된 데이터가 있습니다(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와 유사한 편집기
더 구체적인 답변이 필요하시면 더 구체적인 프로그램 샘플이 필요합니다