我有一个二进制文件,可以打印问题然后等待用户回答。我无法访问该二进制文件的源代码,但我想修改屏幕输出。
例子:
> ./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