我的机器上有一些来自 Windows 系统的数据库转储。它们是文本文件。我正在使用 cygwin 来查看它们。这些似乎是纯文本文件;我用记事本和写字板等文本编辑器打开它们,它们看起来很清晰。但是,当我对它们运行 grep 时,它会说binary file foo.txt matches.
我注意到这些文件包含一些 asciiNUL字符,我认为它们是数据库转储中的工件。
那么是什么让 grep 认为这些文件是二进制的呢?的NUL性格吗?文件系统上有标志吗?我需要更改什么才能让 grep 显示匹配行?
就像在以下问题中讨论的那样:
grep 可能会停止处理它认为是二进制的文件。
虽然这通常不是什么大问题,但在搜索文本文件时,结果证明有时某些文本文件是“脏的”,即包含一些二进制数据。
我提出这个问题的具体情况是,某种二进制数据(对于 grep 认为是二进制的,请参阅引用的问题)以某种方式进入了.bash_history文件,我想将其删除。
如何从文本文件中删除二进制数据?
不仅仅是删除二进制数据,我希望能够查看有问题的(grep)二进制数据是什么,以避免删除需要/重要的东西。