Pipe

在返回提示模式之前修改二進制輸出

  • January 26, 2021

我有一個列印問題然後等待使用者回答的二進製文件。我無法訪問此二進製文件的原始碼,但我想修改螢幕輸出。

例子:

> ./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

引用自:https://unix.stackexchange.com/questions/563815