Grep 不返回任何内容

Grep 不返回任何内容

这是我使用的 grep 命令

grep -ic address log*

输出为 0。我确实知道日志文件中单词 address 出现了 60 多次。但结果仍然为 0。

现在,我将日志的内容复制到新文件 log2 中

 grep -ic address log2 

输出 65!我通过选择全部并复制粘贴来复制内容,而不是使用 cp 命令。我检查并确保文件权限都没有问题。

ls -l显示这个

-rwxrwxrwx 1 root    root              91694 Jul 26 16:18 log

-rw-r--r-- 1 root    root              45220 Jul 30 14:16 log2*

我唯一能看到的差异是第一个日志的大小是其副本的两倍。这是格式问题吗?

当我在 vim 中打开文件时它显示

[已转换][dos]作为格式。

我怎样才能解决这个问题?

任何帮助都将受到赞赏。

答案1

由于您的文件 log 比 log2 大两倍,但应该是精确副本,因此很可能是使用 UCS-2 编码的。该文件是否源自 Windows?

尝试

file log log2

编辑:
注释中的文件输出证实了这一点。

将其用于透明 grep

recode ucs2..utf8 < log | grep ...

或者这样转换文件

recode ucs2..utf8 log
grep ... log

相关内容