Текстовый файл не открывается

Сканирование через

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

текстовый файл

0
задан 21 November 2018 в 10:52

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 через stdin.
  • 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, таким образом да, это хорошо.

1
ответ дан 27 October 2019 в 02:35

Другие вопросы по тегам:

Похожие вопросы: