令我沮丧的是,grep在我的UTF-16文档中找不到像"hello“这样的单词。
有没有人可以推荐一个grep的版本,尝试猜测文件编码,然后正确处理它?
发布于 2009-03-05 03:16:54
ack是基于perl的grep的替代品吗?
你肯定会想看看ack。
它支持Unicode编码,基本上是grep,但更好。
尝试使用grep匹配Unicode区域设置
如果您使用的是Linux、Unix等操作系统,则可能需要将LANG环境变量更改为与您的文档相匹配的编码。
首先检查您的区域设置。这是我的MacBook专业版的默认设置
$ 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下:
$ LANG="foo" grep 'gotta be found now' file.name一些更持久的东西(注意这个):
$ export LANG="foo"
$ grep 'bar' mitz.vah发布于 2009-03-05 00:26:50
Perl有一种比grep更好的正则表达式语法(更强大),它支持UTF8和UTF16,但我不确定它在猜测编码方面有多好……但是,如果您告诉它使用哪种编码,它就可以毫无问题地读取这些文件,并对它们运行正则表达式。为此,您必须为自己编写一个小型Perl程序(可以说是您自己在Perl中的微grep实现),但这并不太难。Perl适用于所有主流操作系统。
发布于 2020-04-16 22:26:54
我很沮丧,grep在我的UTF-16文档中找不到像"hello“这样的词。
有没有人可以推荐一个grep的版本,尝试猜测文件编码,然后正确处理它?
iconv筛选器实用程序与grep结合使用,将UTF-16文件转换为UTF-8,但您必须显式指定输入和输出编码,如下所示:图标-f utf-16 -t utf 8`< file.txt | grep PATTERN
https://stackoverflow.com/questions/613087
复制相似问题