【发布时间】:2016-05-21 23:32:41
【问题描述】:
我在我们的代码库中发现了一个.cpp 文件,该文件被 grep 视为二进制文件。所以我不能像文本文件一样 grep 它,这很烦人,显然不是事情应该是这样的。所以我想知道为什么 grep 认为该文件是二进制文件并解决这个问题。
我尝试使用命令查找任何不寻常的字符
grep -Pna --color -r "[\x00-\x08]|[\x10-\x19]|[\x80-\xFF]" test.cpp
但它不会产生任何匹配。
如何找出这个问题的原因?
我应该提到我在 windows git bash 上。
语言环境的输出:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
【问题讨论】:
-
也许尝试通过
iconv运行它,看看它是否有任何Unicode字符。 -
这听起来像文件包含的字节序列对于您当前的语言环境是不合法的。您能否编辑您的问题以包含
locale命令的输出? -
@MarkSetchell iconv 给出了问题的位置。谢谢。正在调查这个...
标签: windows text grep binaryfiles git-bash