我有一个很大的utf-8文本文件,经常使用来搜索grep。最近grep开始报告它是一个二进制文件。我可以继续使用搜索它grep -a,但是我想知道是什么更改决定了文件现在是二进制文件。
我有上个月的副本,该文件不再被检测为二进制文件,但是对diff他们来说不切实际,因为它们的差异超过20,000行。
file 将我的文件标识为
UTF-8 Unicode英文文本,行很长
如何找到字符/行/等。在我的文件中哪些触发了此更改?
类似的,非重复的问题19907涵盖了NUL的可能性,但grep -Pc '[\x00-\x1F]'说我没有NUL或任何其他ANSI控制特性。
nul和Esc。我为他们尝试了grepping。我可以找到escs(\x1B),但nul从未出现。上面给出的测试显示,对于包含Escs 的行,显示1,但是对于不包含的任何范围,则没有显示\x1B。我不相信那个测试。试一试grep -zc .(应该比nul文件中的s大1)。(另外,使用可能会更好[[:cntrl:]]。)
                sed -z 's/.*\(....\)$/\1/' foo | od -c在NUL(如果有)之前看到几个字符,这可能会导致您遇到问题。
                sed没有-z选择:sed: invalid option -- 'z'。