如何扫描角色的一部分?

时间:2016-09-16 20:01:14

标签: bash shell utf-8 utf8mb4

我正在使用Mac El Capitan的bash shell。如何在一系列文件中扫描部分8字节字符?构建一个读取

的项目时出错
Incorrect string value: '\xF3\x95\x90\x8D\xEA\x93...' for column 'CODE' at row 1

我想知道这个字符串值在哪里发挥作用。不幸的是,错误并没有给我更多信息,但我知道所有潜在文件的目录。

1 个答案:

答案 0 :(得分:0)

我故意在当前目录中损坏了我的一个shell文件,使用十六进制编辑器插入0xf3字符。

我写过这个(笨拙)脚本,它使用od(八进制转储),以十六进制模式char-by-char,带有十六进制偏移量,greps用于当前臭名昭着的f3字符目录以及下面的所有目录中,过滤文件和名称(因此您可以删除名称,过滤它仍然有效)

find . -type f -name "*.sh" | while read f
do
    line=$(od -Ax -t x1 $f | grep -w f3)
    if [ $? = 0 ] ; then
      echo file $f is corrupt: $line
    fi
done

结果在我的目录中:

file ./quote.sh is corrupt: 000010 69 6d 61 6c f3 3d 24 28 6d 79 73 71 6c 20 2d 75