为了账号安全,请及时绑定邮箱和手机立即绑定

(grep)正则表达式以匹配非ASCII字符?

(grep)正则表达式以匹配非ASCII字符?

萧十郎 2019-11-22 15:40:16
在Linux上,我有一个包含大量文件的目录。其中一些具有非ASCII字符,但它们都是有效的UTF-8。一个程序有一个错误,使其无法使用非ASCII文件名,因此我必须找出有多少错误。我打算这样做find,然后执行grep打印非ASCII字符,然后执行a wc -l查找数字。不必是grep;我可以使用任何标准的Unix 正则表达式,例如Perl,sed,AWK等。但是,是否存在“不是ASCII字符的任何字符”的正则表达式?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

这将匹配一个非ASCII字符:


[^\x00-\x7F]

这是有效的PCRE(与Perl兼容的正则表达式)。


您还可以使用POSIX速记:


[[:ascii:]] -匹配一个ASCII字符

[^[:ascii:]] -匹配一个非ASCII字符

[^[:print:]] 可能就足够了。**


查看完整回答
反对 回复 2019-11-22
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

不,[^\x20-\x7E]不是ASCII。


这是真正的ASCII:


 [^\x00-\x7F]

否则,它将修剪掉换行符和ASCII表中的其他特殊字符!


查看完整回答
反对 回复 2019-11-22
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

[^\x00-\x7F]并且[^[:ascii:]]错过了一些控制字节,因此有时字符串可能是更好的选择。例如,cat test.torrent | perl -pe 's/[^[:ascii:]]+/\n/g'它将对您的终端产生奇怪的影响,strings test.torrent并表现正常。


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 1052 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信