首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个精通编码的grep替代品?

一个精通编码的grep替代品?
EN

Stack Overflow用户
提问于 2009-03-05 00:11:43
回答 3查看 2.1K关注 0票数 10

令我沮丧的是,grep在我的UTF-16文档中找不到像"hello“这样的单词。

有没有人可以推荐一个grep的版本,尝试猜测文件编码,然后正确处理它?

EN

回答 3

Stack Overflow用户

发布于 2009-03-05 03:16:54

ack是基于perl的grep的替代品吗?

你肯定会想看看ack

它支持Unicode编码,基本上是grep,但更好。

尝试使用grep匹配Unicode区域设置

如果您使用的是Linux、Unix等操作系统,则可能需要将LANG环境变量更改为与您的文档相匹配的编码。

首先检查您的区域设置。这是我的MacBook专业版的默认设置

代码语言:javascript
复制
 $ locale 
 LANG="en_US.UTF-8"
 LC_COLLATE="en_US.UTF-8"
 LC_CTYPE="en_US.UTF-8"
 LC_MESSAGES="en_US.UTF-8"
 LC_MONETARY="en_US.UTF-8"
 LC_NUMERIC="en_US.UTF-8"
 LC_TIME="en_US.UTF-8" 
 LC_ALL=

比方说,在bash下:

代码语言:javascript
复制
$ LANG="foo" grep 'gotta be found now' file.name

一些更持久的东西(注意这个):

代码语言:javascript
复制
$ export LANG="foo"
$ grep 'bar' mitz.vah
票数 6
EN

Stack Overflow用户

发布于 2009-03-05 00:26:50

Perl有一种比grep更好的正则表达式语法(更强大),它支持UTF8和UTF16,但我不确定它在猜测编码方面有多好……但是,如果您告诉它使用哪种编码,它就可以毫无问题地读取这些文件,并对它们运行正则表达式。为此,您必须为自己编写一个小型Perl程序(可以说是您自己在Perl中的微grep实现),但这并不太难。Perl适用于所有主流操作系统。

票数 2
EN

Stack Overflow用户

发布于 2020-04-16 22:26:54

我很沮丧,grep在我的UTF-16文档中找不到像"hello“这样的词。

有没有人可以推荐一个grep的版本,尝试猜测文件编码,然后正确处理它?

  1. ugrep是免费的BSD-3开放源码,支持所有UTF编码,并声称通过支持GNU/BSD grep命令行选项成为grep的真正替代品。同样,ripgrep、ack和silver searcher (ag)也支持UTF编码,但不是grep的替代,因为它们的行为和选项与grep不同。
  2. 您可以将iconv筛选器实用程序与grep结合使用,将UTF-16文件转换为UTF-8,但您必须显式指定输入和输出编码,如下所示:

图标-f utf-16 -t utf 8`< file.txt | grep PATTERN

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/613087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档