프롬프트 모드로 돌아가기 전에 바이너리 출력 수정

프롬프트 모드로 돌아가기 전에 바이너리 출력 수정

질문을 인쇄한 다음 사용자가 대답할 때까지 기다리는 바이너리가 있습니다. 이 바이너리의 소스 코드에 액세스할 수 없지만 화면 출력을 수정하고 싶습니다.

예:

> ./commandx 
 Day 1
 Day 2
 Day 3
 Please type the number:

표시하고 싶은 내용:

Night 1
Night 2
Night 3
Please type the number:

이 경우 파이프라인 솔루션이 작동하지 않습니다.

예:

./commandx | sed 's/Day/Night/g'

 Day 1
 Day 2
 Day 3
 Please type the number:

그런 다음 사용자가 선택할 때까지 기다리지만 선택이 Day되지 않습니다 .Night

답변1

strace로 바이너리를 검사한 결과 STDERR write(2, "Day 1", ...) 을 쓰는 것을 발견하여
출력을 STDERR에서 STDOUT으로 리디렉션하고 즉시 수정했습니다.

commandx 2>&1 | perl -pe 's/Day/Night/g

관련 정보