返回提示模式之前修改二进制输出

返回提示模式之前修改二进制输出

我有一个二进制文件,可以打印问题然后等待用户回答。我无法访问该二进制文件的源代码,但我想修改屏幕输出。

例子:

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

相关内容