質問を印刷してからユーザーが答えるのを待つバイナリがあります。このバイナリのソースコードにアクセスできませんが、画面出力を修正したいと思います。
例:
> ./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