【问题标题】:How do I scan for part of a character?如何扫描字符的一部分?
【发布时间】:2016-09-16 20:01:13
【问题描述】:

我在 Mac El Capitan 中使用 bash shell。如何扫描一系列文件中的 8 字节字符的一部分?构建读取的项目时出现错误

Incorrect string value: '\xF3\x95\x90\x8D\xEA\x93...' for column 'CODE' at row 1

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

【问题讨论】:

    标签: bash shell utf-8 utf8mb4


    【解决方案1】:

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

    我编写了这个(笨拙的)脚本,它以十六进制模式逐字符使用od(八进制转储),具有十六进制偏移量,并在当前目录和所有目录中对臭名昭著的f3 字符进行greps下面的目录,过滤文件和名称(因此您可以删除名称过滤它仍然有效)

    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
    

    【讨论】:

    • 我不知道这个字符出现在我的目录中的哪个文件中,所以我将您的行“for f in *.sh”切换为“for f in *”,但出现错误“od: src :读取错误:是目录”和“od:目标:读取错误:是目录”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多