扫描方式
sudo date >> clam &&
clamscan -r -i --detect-pua --remove /home >> clam &&
date >> clam
返回未打开的文件
错误信息:
Could not open the file /home/alaa/clam.
pluma has not been able to detect the character encoding.
Please check that you are not trying to open a binary file.
Select a character encoding from the menu and try again.
输出uname -a
:
4.15.0-39-generic #42~16.04.1-Ubuntu SMP Wed Oct 24 17:05:15 UTC 2018 i686 athlon i686 GNU/Linux
答案1
第 542 行有一堆空字节。我不知道为什么,但我可以告诉你我是如何解决这个问题的,以及如何修复它。
首先,我从您的链接下载了文件,然后运行file clam
,它显示clam: data
,所以这意味着它包含不应该在 UTF-8 文本文件中的字节/字符,否则它会显示UTF-8 Unicode text
。
然后我编写了这个管道来查找非打印字符:
< clam python3 -c 'import sys; [print(repr(line.rstrip("\n"))) for line in sys.stdin]' |
grep -n '\\'
输出(其中\x00
代表空字节):
542:'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ن يول 2 11:58:51 EET 2018'
解释:
< clam
-clam
通过标准输入读取。python3
- Python 3 原生支持 Unicode,因此它是完成这项工作的好工具。[... for line in sys.stdin]
- 遍历 stdin 的每一行。print(repr(line.rstrip("\n")))
- 打印每行的表示,不包括尾随的换行符。非打印字符将用反斜杠序列表示。grep -n '\\'
- 打印包含反斜杠和行号的行。
请注意,这是一种快速但又肮脏的方法。
要修复此问题,只需删除空字节即可。tr
这很方便:
tr -d '\0' < clam > clam.txt
然后用 确认输出文件没有问题file clam.txt
。它显示clam.txt: UTF-8 Unicode text
,所以是的,文件没有问题。
答案2
您还可以更安全地进行此操作:ascii2uni clam > clam.txt