我的机器上有一些来自 Windows 系统的数据库转储。它们是文本文件。我正在使用 cygwin 来查看它们。这些似乎是纯文本文件;我用记事本和写字板等文本编辑器打开它们,它们看起来很清晰。但是,当我对它们运行 grep 时,它会说binary file foo.txt matches.
我注意到这些文件包含一些 asciiNUL字符,我认为它们是数据库转储中的工件。
那么是什么让 grep 认为这些文件是二进制的呢?的NUL性格吗?文件系统上有标志吗?我需要更改什么才能让 grep 显示匹配行?
我有一个很大的 utf-8 文本文件,我经常用grep. 最近grep开始报告它是一个二进制文件。我可以继续用 搜索它grep -a,但我想知道是什么改变使它决定文件现在是二进制的。
我有一份上个月的副本,该文件不再被检测为二进制文件,但这对diff他们来说不切实际,因为它们在 > 20,000 行上有所不同。
file 将我的文件标识为
UTF-8 Unicode 英文文本,行很长
我怎样才能找到字符/行/等。在我的文件中触发了这个变化?
类似的非重复问题19907涵盖了 NUL 的可能性,但grep -Pc '[\x00-\x1F]'表示我没有 NUL 或任何其他 ANSI 控制字符。