我有一个大文本文件,其中包含一些使LaTeX崩溃的unicode字符。如何在Linux bash中使用sed等在文件中找到非ASCII字符?
答案 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