【问题标题】:grep any non-keyboard charactergrep 任何非键盘字符
【发布时间】:2017-04-06 02:03:44
【问题描述】:

我正在下载 BibTex 条目,但通常有随机字符不会出现在输出 PDF 中,例如àèìòùáéíóúäëïöüâêîôûÿøÀÈÌÒÙÁÉÍÓÚÄËÏÖÜ 但这个列表并不全面(我无法输入的随机外国字母)。

我尝试过类似的东西

grep -nP '[^a-zA-Z0-9\/,=!@#$%^&*()_]' ~/Documents/Library.bib

但一定有比这更简单的方法。

我如何 grep 或使用 perl 正则表达式来处理我无法在键盘上键入的任何字符(这也是 ASCII 吗?)例如如果我有一个带重音的“n”,有什么方法可以知道吗?

【问题讨论】:

  • 有关键盘布局的信息取决于您的操作系统。您使用 Linux、BSD 还是 Mac?
  • Library.bib 文件采用哪种编码方式?
  • 还有一个POSIX字符类[:ascii:]可以匹配ASCII字符集中的任意字符
  • [[:ascii:]] 等价于[\x00-\x7F];所以它包括控制字符。
  • @HåkonHægland 谢谢!效果很好,如果您在答案区域grep -P [^[:ascii:]] ~/Documents/Library.bib中写下它,我会接受它作为答案

标签: perl grep


【解决方案1】:

您可以使用与 ASCII 字符集中的任何字符匹配的 POSIX 字符类 [:ascii:]。打印所有非 ASCII 字符的行:

grep -nP '[^[:ascii:]]' ~/Documents/Library.bib

或者,也突出显示非 ASCII 字符:

grep --color=auto -nP '[^[:ascii:]]' ~/Documents/Library.bib

有关更多信息,请参阅 Gnu grep 手册中的 Character Classes and Bracket Expressions 和 Regular-Expression.info 中的 POSIX Bracket Expressions

另见:How do I grep for all non-ASCII characters in UNIX

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2013-02-24
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多