尝试在 .db
文件中搜索字符串时遇到一些特殊问题。我尝试的方法是使用 grep,它显然找到了字符串,尽管这是输出:
$ grep "ext" *.db
Binary file enormous.db matches
这有几个问题:
- 我需要返回实际匹配的字符串。
- 我只想返回匹配字符串中的特定字符串
- 文件名发生变化,因此仅扩展名匹配
- 有多个有效扩展名(ext、bin、fck)
The thing that differentiates the string I'm looking for apart from the others is that it always contains some random character followed by a hexadecimal 02, then the filename.
在上面可怕的困惑中是TheFile.ext,我希望捕获它(十六进制如下所示)。也许 grep 不是执行此特定任务的正确工具?我不确定,但愿意接受想法 - 谢谢。
2F46696C65204F6E652E65787400D60F950017416E6F746865722046696C652E657874001003230254686546696C652E65787400D70FA80FA80FA80FA8000F0FA80020416E6F746865722E65787400AE0FB9000FB9000FBA00204D6F726546696C65732E6578747C00000000000000000E52616E646F6D2E65787400BB0C030701404E00000000000003260351012F506174682F546F20536F6D652F66696C652E657874
最佳答案
grep
不同平台之间差异很大。以下是在 GNU 和 OS X 上执行此操作的方法:
$ grep -ao '[[:print:]]*\.ext' file.bin
/File One.ext
Another File.ext
TheFile.ext
Another.ext
MoreFiles.ext
Random.ext
/Path/To Some/file.ext
如果您发现它不起作用,请说明您尝试在哪个平台上使用它。
关于regex - 匹配文件内的字符串并返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993500/