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

Character encoding 一个精通编码的grep替代品?,character-encoding,grep,Character Encoding,Grep,我很沮丧grep在我的UTF-16文档中找不到像“hello”这样的词 有谁能推荐一个尝试猜测文件编码然后正确处理的grep版本吗?Perl有一种比grep更好的正则表达式语法(功能更强大),它支持UTF8和UTF16,但我不确定它在猜测编码方面有多好。。。不过,如果您告诉它使用哪种编码,它就可以毫无问题地读取这些文件,并在这些文件上运行正则表达式。您必须为此编写一个小型Perl程序(可以说是您自己的Perl微grep实现),但这并不难。Perl适用于所有主要操作系统。ack作为基于Perl的g

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


有谁能推荐一个尝试猜测文件编码然后正确处理的grep版本吗?

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

ack作为基于Perl的grep替代品? 你肯定会想退房的

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

尝试与grep匹配的Unicode区域设置 如果您使用的是Linux、Unix等,则可能需要将LANG envariable更改为与文档匹配的编码

首先检查您的区域设置。以下是我在MacBook Pro上默认设置的内容:

比如,在bash下:

$ LANG="foo" grep 'gotta be found now' file.name
一些更持久的东西(注意这个):

我很沮丧,因为grep在我的字典里找不到像“hello”这样的词 UTF-16文件

有人能推荐一个试图猜测文件的grep版本吗 编码,然后正确处理它

  • 它是免费的BSD-3开源软件,支持所有UTF编码,并声称通过支持GNU/BSD grep命令行选项,可以真正替代grep。同样,ripgrep、ack和silver searcher(ag)也支持UTF编码,但不是grep的替代品,因为它们的行为和选项与grep不同

  • 您可以将
    iconv
    filter实用程序与
    grep
    结合使用,将UTF-16文件转换为UTF-8,但必须明确指定输入和输出编码,例如:

    iconv-f utf-16-t utf8`

  • 您的操作系统是什么?Perldoc网站上甚至有一些用Perl编写的非常基本的grep替换示例。我相信它们通常大约有5或6行,不过如果您想添加任何复杂的命令行解析,它们会更多。获得ack比我知道的更容易:curl>~/bin/ack&&chmod 0755$以上链接不再对任何人有效?无法让它工作。(1) 重新确认:确认在我的Cygwin安装中识别UTF16LE。ACK文档中也没有提到Unicode或UTF16。(2) Re grep:UTF16LE在哪个地区?(3) UbuntuBug:Guy基本上说:对不起,Unix就是这样。
    $ LANG="foo" grep 'gotta be found now' file.name
    
    $ export LANG="foo"
    $ grep 'bar' mitz.vah