dos2unix: Обнаружен двоичный символ, пропускается двоичный файл

В настоящее время у меня возникает проблема, из-за которой происходит сбой моего сценария при попытке выполнить команду dos2unix для файла.

Вот что я имею в сценарии:

dos2unix -n data/file data/tmp_file
dos2unix: Binary symbol found at line 21107611
dos2unix: Skipping binary file data/input/DATA.txt
mv -f data/tmp_file data/input/DATA.txt
mv: cannot stat ‘data/tmp_file’: No such file or directory

Я пошел на строку вопрос, и у меня есть "^@" здесь. Что это такое и как мне заставить мой скрипт работать с помощью команды dos2unix?

{128392938928392838123129381298398129^@ 

Спасибо

1 ответ

Решение

^@ является представлением Vim нулевого байта; ср. :help <Nul>

Обычные текстовые файлы не содержат нулевых символов. Двоичные файлы обычно содержат много нулевых символов, и они будут повреждены, если преобразуются целиком; вот почему dos2unix отказывается преобразовать это.

У вас есть несколько вариантов:

  • Этот нулевой символ может быть вставлен случайно или является мусором. Отредактируйте файл (в Vim) или создайте его заново. Если вы используете Vim, вы можете сделать преобразование в нем (через :help ++ff например, :w ++ff=unix). Инструменты командной строки, такие как dos2unix до сих пор их используют для неинтерактивных вызовов.
  • Этот нулевой персонаж принадлежит там. dos2unix команда имеет -f|--force возможность принудительного преобразования.
Другие вопросы по тегам