【发布时间】:2012-09-07 19:27:46
【问题描述】:
我编写了一个脚本,将数据输入到一个名为 ctffind 的 exe 程序中。 exe 程序将一堆数据输出到我试图在日志文件中捕获的屏幕。
这是我现在正在使用的
my $logout = logfile
open STDOUT, '>>', "$logout";
open my $PIPE1, '|-', '/opt/ctf/ctffind3_mp.exe' or die $!;
它可以将屏幕上出现的所有内容输出到日志文件中。
如果我more $logfile 文件按预期显示,它大约有 5000 行长,并且有大约 50 行包含字符串“最终值”。在我的下一步中,我执行grep "final values" logfile 它认为日志文件是一个二进制文件并且不起作用而是返回:
Binary file logfile matches
如何设置它以使日志文件正确编码? ctffind.exe 在运行时也会生成二进制文件,这是问题的一部分吗?
【问题讨论】:
-
file命令告诉您有关您的日志文件的什么信息(即在命令行上执行file logfile)? -
听起来你有一些奇怪的零字节或那里的东西。
grep -a pattern file是“二进制文件匹配”问题的解决方法。 -
我以前在使用日志文件时遇到过这个问题。我敢打赌,您在输出中的某处有一个不可见(不可打印)的字符。您可能会寻找其中的一些(
^P是我之前被咬过的一个)。 -
grep -a已修复!!!谢谢! -
(@tripleee:如果你让你评论一个答案并在这里通知我,我会投票赞成 - 如果你关心的话。)