Проблема с горизонтальным объединением файлов CSV в Cygwin

Я обычно использую одну из следующих альтернатив:

  • rsync -aHAX (добавьте v для многословия), удостоверяется, что Вы сохраняете любую структуру ссылки и x-attrs в целевой папке при копировании. Не забывать a средства архивируют, и уже сохраняет время, владение и полномочия.
  • Простой tar cvf (не сжимайтесь, чтобы сэкономить время, просто смолить их), то, что я использую, если первый не встречает то, в чем я нуждаюсь по любой причине, и у меня нет времени, но я всегда пробую первый.

Чтобы проверить, что все пошло, как это должно, можно работать diff -r <folder1> <folder2> впоследствии, если Вы хотите.

3
02.06.2015, 02:36
1 ответ

Unix представляет newlines с символом LF (line feed = \n = ^J = 10 десятичных = 012 восьмеричных = 0x0a шестнадцатеричных). Windows представляет новые строки с двухсимвольной последовательностью CR, LF (CR = возврат каретки = \r = ^M = 13 десятичный = 015 восьмеричный = 0x0d шестнадцатеричный). Когда текстовый файл Windows обрабатывается утилитой Unix, каждая строка заканчивается поддельным CR символом.

Утилиты Cygwin - это прямые порты инструментов Linux. Они не обрабатывают текстовые файлы Windows специально, поэтому CR-символы заканчиваются содержимым строки. В вставленном файле перед каждой запятой есть CR.

Сначала вы можете преобразовать файлы в Unix-формат:

dos2unix *.csv
paste -d , test1.csv test2.csv > paste.csv

Или просто удалить CR-символы. Здесь это работает, чтобы удалить их из строки; некоторые другие манипуляции с текстом потребуют их удаления перед обработкой.

paste -d , test1.csv test2.csv | tr -d '\r' > paste.csv
3
27.01.2020, 21:22

Теги

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