在带有重音字符的文件中搜索文本

在带有重音字符的文件中搜索文本

我想在文件中搜索带有重音符号的文本。我知道我可以使用 grep 来搜索常规文本:

grep -rnw './' -e 'KORONA'

...但它不适用于带有重音字符的单词,例如KORONAVÍRUS, obmedzená

有什么推荐吗?

答案1

如果所有文件的编码相同,则只需将搜索到的句子以该编码写入即可。这就提出了两个可能的条件:

  • 命令行(或执行命令的位置)上的编码(可能由变量之一设置localeLC_*与所有文件的编码相同,然后,像平常一样 grep :

    grep -rn 'KORONAVÍRUS, obmedzená.'
    

-w仅当您想要匹配整行时才使用该选项。

  • 如果所有文件的编码不同,请将搜索字符串更改为该编码。

    $ echo 'KORONAVÍRUS, obmedzená.' >orig
    $ grep -ran "$(cat orig | iconv -t CP1252)"
    

    在这里,该-a选项允许 grep 搜索具有不同编码的内部文件,这些编码可能被检测为binary.

如果文件可能包含不同的编码,那么就没有解决方案。没有办法自动检测文件编码。

这是不是如果文件没有统一的编码,则可以在文件列表中进行搜索。

有关的:
如何使用 grep/ack 处理任意编码的文件?

相关内容