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

Jon*_*ein 24 unicode bash grep

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

pix*_*eat 32

尝试:

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

哪个可以用作:

printf '?TF8\n' | nonascii
Run Code Online (Sandbox Code Playgroud)

[] ^表示"不".所以[^ -~]意味着字符不在空格和〜之间.因此,排除控制字符,这与非ASCII字符匹配,并且是一个更便携但稍微不太准确的版本[^\x00-\x7f].的\+手段1 or more和将得到multibye字符具有围绕完整的字符(一个或多个)中所示的颜色,而不是在每个字节穿插,从而破坏多字节序列


kev*_*kev 21

试试这个命令:

grep -P '[^\x00-\x7f]' file
Run Code Online (Sandbox Code Playgroud)

  • 注意:`-P`选项在BSD grep中不起作用,这是OSX中提供的 (6认同)
  • @JonasStein请添加`-P`( - perl-regex)选项. (2认同)