28

我有一个大文本文件,其中包含一些使 LaTeX 崩溃的 unicode 字符。如何在 Linux bash 中使用 sed 等在文件中查找非 ASCII 字符?

4

2 回答 2

35

尝试:

nonascii() { LANG=C grep --color=always '[^ -~]\+'; }

可以像这样使用:

printf 'ŨTF8\n' | nonascii

[] ^是“不”的意思。所以[^ -~]表示不在空格和~之间的字符。因此,不包括控制字符,这匹配非 ASCII 字符,并且是一个更便携但稍微不太准确的版本[^\x00-\x7f]。该\+方法1 or more将获得多字节字符以在完整字符周围显示颜色,而不是散布在每个字节中,从而破坏多字节序列

于 2012-11-28T02:08:57.477 回答
26

试试这个命令:

grep -P '[^\x00-\x7f]' file
于 2012-11-28T02:00:20.907 回答