如何使用bash工具搜索非ASCII字符?

时间:2012-11-28 01:56:08

标签: bash unicode grep

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

2 个答案:

答案 0 :(得分:28)

尝试:

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

可以使用:

printf 'ŨTF8\n' | nonascii

[] ^表示“不是”。所以[^ -~]表示不在空格和〜之间的字符。因此,排除控制字符,这与非ASCII字符匹配,并且在[^\x00-\x7f]以下的\+版本中,虽然稍微不那么精确,但是更具可移植性。 1 or more表示{{1}}并且将获得多个字符以在整个字符周围显示颜色,而不是散布在每个字节中,从而破坏多字节序列

答案 1 :(得分:21)

尝试此命令:

grep -P '[^\x00-\x7f]' file