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