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
возможность принудительного преобразования.