Что изменится, когда файл будет сохранен в Kedit для Windows, чего не делает команда unix2dos? - PullRequest
0 голосов
/ 26 марта 2012

Итак, у меня странный вопрос. Я написал скрипт, который переформатирует файлы данных. Я в основном создаю новые файлы с правильным порядком столбцов, интервалом и так далее. Затем я unix2dos эти файлы (программа, для которой я форматирую эти файлы, является DIPS для Windows, и я предполагаю, что файлы должны быть ANSI). Однако когда я открываю файлы в программе DIPS, возникает ошибка, и файл не открывается.

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

С другой стороны, если я сначала открою файлы данных, которые я создал, с помощью моего скрипта в Kedit, сохраните их, а затем откройте их в программе DIPS, все работает.

Мой вопрос: что может сделать сохранение в Kedit, чего не может сделать unix2dos?

(Также, если я пытаюсь использовать блокнот или блокнот для слов вместо Kedit, файл не открывается в DIPS)

Вот что было создано с помощью команды diff в unix

» 1,16c1,16
* Этот файл создан Dips for Windows.
* Следующие 2 строки являются заголовком этого файла.
Кобра Панама
Отверстие B11106-GT

Количество ходов: 0

  • Глобальная ориентация:
    DIP / DIPDIRECTION

    0,000000 (Склонение)

    НЕТ КОЛИЧЕСТВА

    Количество дополнительных столбцов: 0

-
* Этот файл создан Dips for Windows.
* Следующие 2 строки являются заголовком этого файла.
Кобр Панама
Отверстие B11106-GT

Количество ходов: 0

  • Глобальная ориентация:
    DIP / DIPDIRECTION

    0,000000 (Склонение)

    НЕТ КОЛИЧЕСТВА

    Количество дополнительных столбцов: 0

18c18

-

440c440

-

442c442

-1

-1
«

Любая помощь будет принята с благодарностью! Спасибо!

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Хорошо! Разобрался.

Просто, когда вы unix2dos ваш файл, вы не удаляете пробелы между последней буквой в строке и символом разрыва строки. При сохранении в Kedit вы удаляете пробелы между последней буквой в строке и символом разрыва строки.

В моем сценарии была плохая практика программирования, в которой я писал такую ​​строку:

echo "Это пример строки" >> outfile.txt

Количество символов равно 32, и если бы вы могли видеть символ строки разрыва (chr (10)), строка была бы прочитана;

Это пример строки

Если вы unix2dos outfile.txt, строка выглядит так же, как и выше, но с другим символом строки разрыва. Однако, когда вы помещаете файл в Kedit и сохраняете его, теперь количество символов равно 25, и строка выглядит следующим образом:

Это пример строки

Это происходит потому, что Kedit не сохраняет пробелы в конце строки. Он помещает символ возврата или разрыва строки на последнюю букву или символ «не пробел» в строке.

Так что программы, которые читают буквенный ввод, такой как DIPS (я предполагаю) или более широко используемые сценарии AutoCAD, будут иметь реальную проблему с дополнительными пробелами перед возвращаемым символом. В основном в сценариях AutoCAD пробел в строке обрабатывается как возвращаемый символ. Так что если у вас есть десять лишних пробелов в конце строки, они обрабатываются так же, как десять возвратов вместо того, который вы, вероятно, намеревались.

О, и если это помогло вам, или хотя это было хорошо, пожалуйста, проголосуйте!

0 голосов
/ 26 марта 2012

unix2dos преобразует символы перенос строки в конце каждой строки, из разрывов строки Unix (10) в разрывы строки DOS (13, 10)

Kedit может изменить кодировку файла (например, от ansi до UTF-8)

Кодировку файла можно изменить с помощью утилиты iconv (на коробке linux)

...