我想在文件中搜索带有重音符号的文本。我知道我可以使用 grep 来搜索常规文本:
grep -rnw './' -e 'KORONA'
...但它不适用于带有重音字符的单词,例如KORONAVÍRUS
, obmedzená
。
有什么推荐吗?
答案1
如果所有文件的编码相同,则只需将搜索到的句子以该编码写入即可。这就提出了两个可能的条件:
命令行(或执行命令的位置)上的编码(可能由变量之一设置
locale
)LC_*
与所有文件的编码相同,然后,像平常一样 grep :grep -rn 'KORONAVÍRUS, obmedzená.'
-w
仅当您想要匹配整行时才使用该选项。
如果所有文件的编码不同,请将搜索字符串更改为该编码。
$ echo 'KORONAVÍRUS, obmedzená.' >orig $ grep -ran "$(cat orig | iconv -t CP1252)"
在这里,该
-a
选项允许 grep 搜索具有不同编码的内部文件,这些编码可能被检测为binary
.
如果文件可能包含不同的编码,那么就没有解决方案。没有办法自动检测文件编码。
这是不是如果文件没有统一的编码,则可以在文件列表中进行搜索。