我有一堆 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