2013-05-24 10 views
2

У меня есть> 5000 текстовых файлов, сгенерированных в Windows из файлов PDF, которые мне нужно обработать на машине Mac OS X. Я запускаю dos2unix на всех из них, чтобы исправить новую строку и преобразовать кодировку из UTF-16LE в UTF-8.Текстовые файлы, появляющиеся как bynaries на Mac Os X

В 4949 случаях все идет нормально, но для 320 файлов dos2unix пропускает выполнение, говоря, что это двоичные файлы.

Это когерентный номер file -c, который дает мне data для 320 пропущенных файлов и текста для других файлов. Однако это текст с визуального осмотра ...

Как я могу восстановить 320? Сначала я подозревал, что это наличие спецификации, но оно также появляется в файлах, которые не дают проблем.

Кроме того, как данные, так и текстовые файлы начинаются с:

0000000 ff fe 3d 00 20 00 70 00 61 00 67 00 65 00 20 00 
0000010 31 00 20 00 3d 00 0a 00 0d 00 0d 00 0a 00 

Любой намек? Спасибо заранее.

ответ

0

Согласно dos2unix --help, вы можете передать аргумент --force на номер dos2unix на «принудительное преобразование двоичных файлов». Таким образом, в вашей оболочке, находясь внутри каталога с пропущенными файлами 320, вы можете ввести dos2unix --force *.

+0

Рори, спасибо, но в конце концов это создаст только другие искаженные файлы, которые я не могу обработать дальше. – agaved

0

Вы можете попробовать последнюю версию dos2unix (6.0.3). Он напечатает номер строки первого двоичного символа. Это может помочь вам проанализировать проблему.

С наилучшими пожеланиями,

+0

Версия 6.0.4-бета также будет печатать значение двоичного символа. Получить бета-версию с http://waterlan.home.xs4all.nl/dos2unix.html –

2

Я обнаружил, что иногда текстовые файлы содержат непечатаемые символы ASCII. В таких случаях, даже если файлы являются «текстовыми» файлами, dos2unix считает их двоичными. Если это так, то вы можете использовать команду tr как таковой:

tr -cd '\11\12\15\40-\176' < file.txt 

Это основная команда и вычистить эти непечатаемые символы и выводить ваш новый ASCII-чистый текст на стандартный вывод. Для того, чтобы на самом деле сохранить этот вывод в виде файла, просто передать выходные данные в файл:

tr -cd '\11\12\15\40-\176' <file.txt> newfile.txt 

Теперь newfile.txt ваш текстовый файл, на котором вы можете запускать dos2unix.

комплемента (т.е. -c) строки '\11\12\15\40-\176' означает, что tr команда удаляет все, кроме символов, определенных в этой строке, которые:

  • восьмеричное \ 11: Вкладка
  • восьмеричное \ 12 : новая линия
  • восьмеричное \ 15: каретка возврата
  • восьмеричной \ 40- \ 176: все хорошо/нормальных символов клавиатуры

 Смежные вопросы

  • Нет связанных вопросов^_^