gpt4 book ai didi

regex - 在文件中查找非 ASCII 代码点

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:17 27 4
gpt4 key购买 nike

我目前正在使用这个正则表达式来查找文件中的非 ASCII 代码点,无论是什么编码:

$ cat test.txt | hd | grep -P " [8-9a-f][\da-f]"

是否有更好、更简洁或不那么 hacky 的方法? 我通常使用 grep -P "[^\x00-\x7f]" 来查找令人反感的内容字符,但在这里我要查找令人反感的代码点

请注意,当前的 hacky 方法确实具有显示周围 ASCII 字符的良好副作用,这对于上下文非常有用。

最佳答案

使用高清,这应该会更快:

hd test.txt |grep -w '[89a-f][0-9a-f]'

(grep -P 调用 libpcre 并且速度较慢。grep -w 仅搜索“单词”并将默认为标准 posix 正则表达式,这几乎与-F 纯文本查询。从管道中删除 cat 也可以节省(微不足道的)工作量。)

如果你不想要上下文,你可以给 grep -o 标志。如果你想更清楚地调用上下文,请考虑 --color (或者甚至 --color=always 如果你在某处管道输出并且不介意着色控制字符)。您可能还会发现 grep 的 -n 标志很有用,它会为您提供行号。

认为您可以使用 grep 的 -a 标志在单个命令中实现您要查找的内容(这会强制所有内容都作为文本而不是无用的“二进制文件 test.txt 匹配”输出),尽管您可能不喜欢输出对终端的影响。也许将其通过管道传输到文件中,然后使用 vim 查看该文件(与 less 不同,它不会呈现控制字符):

grep -aP '[^\x00-\x7f]' test.txt > found-highchars
view found-highchars

这可能比通过 hdgrep 管道更快,也可能不会更快。

关于regex - 在文件中查找非 ASCII 代码点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com