Pipe
在返回提示模式之前修改二進制輸出
我有一個列印問題然後等待使用者回答的二進製文件。我無法訪問此二進製文件的原始碼,但我想修改螢幕輸出。
例子:
> ./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
我用 strace 檢查了二進製文件,發現它寫入了 STDERR write(2, “Day 1”, …)
所以我將輸出從 STDERR 重定向到 STDOUT 並即時修改它
commandx 2>&1 | perl -pe 's/Day/Night/g