如何在目录中的所有文件中搜索特定字节?

如何在目录中的所有文件中搜索特定字节?

我有一堆 utf8 和 ISO8859-1 混合编码的文件。它们之间唯一真正的区别是我想将其转换为 utf8 的 4 个字符。我将手动执行此操作,我所需要做的就是找到它们所在的文件。

我尝试用 grep 查找它们,grep -rlP '[\xe4\xf5\xf6\xfc\xc4\xd6\xd5\xdc]' *但没有意识到 ISO8859-1 中这些字符的字节码与 Unicode 中相同字符的 Unicode 代码点值完全相同(即使在 UTF8 中它们以 2 个字节表示) 。

我不知道如何查找grep字节值而不是代码点......所以我在这里。附言!我无法在给定的 CentOS 7 计算机上安装任何东西。

如何在目录中的所有文件中搜索特定字节或多个字节?

答案1

我认为你可以通过grep在 C 语言环境下运行来做到这一点。

该字符串为UTF-8 格式的ööli七个字节,为 U+00F6。c3 b6 c3 b6 6c 69 0aö

假设您处于 UTF-8 语言环境中,grep -P将查找字符 U+00F6:

$ echo 'ööli' |grep -o -P '\xf6'
ö
ö

在 C 语言环境中,这将查找字节 C3:

$ echo 'ööli' |LC_ALL=C grep -o -P '\xc3'| od -tx1
0000000 c3 0a c3 0a

相关内容