这是我使用的 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