在文件中查找非 ASCII 文本



我正在尝试在文件中查找希腊词μάθηση,在Unicode字符中,使用grepu03bcu03acu03b8u03b7u03c3u03b7。 我试过这个命令

grep -r $"u03bcu03acu03b8u03b7u03c3u03b7" filename.txt

但它失败了。有什么帮助吗?

这适用于我的 Maczsh

fgrep "$(echo 'u03bcu03acu03b8u03b7u03c3u03b7')" filename.txt

以下内容适用于我的 Macbash3.2.57(对于那些不知道的人:由于许可问题,Apple 切换到 zsh 而不是切换到 bash 版本 4(

fgrep "$(echo -e 'xcexbcxcexacxcexb8xcexb7xcfx83xcexb7')" filename.txt

bash中的echo的内置版本(你可以用man bash而不是man echo来阅读(需要-e选项来扩展某些转义序列(在这种情况下x(,但u(Unicode(不在其中。我不知道这在较新版本的 bash 中是否不同。

为了找到搜索字符串的 UTF-8 十六进制表示形式,我对我编写μάθηση的文本文件进行了od -tx1。当然,在这里我假设您的文件是 UTF-8 编码的。


不过,以下内容应该始终有效:(*(

μάθηση写在 1 行文件中,假设它被称为grepfile.txt,然后

fgrep -f grepfile.txt filename.txt

(在 Mac 上使用bashzsh进行测试(

(*(:只要两个文件的编码相同,此解决方案就应该有效(您可以使用file命令检查编码,请记住 7 位 ASCII 是 UTF-8 的子集,也是所有 ISO-8859-* 编码的子集(。

最新更新