Как импортировать файл с корректным методом?

На самом деле я не нахожусь в реальной Ubuntu. Я нахожусь в человечности на окнах 10. Если я нахожусь в реальной человечности. Я могу использовать эту команду

ls >list.txt

получить текстовый файл. И каждая строка просто содержит один объект (никакой избыточный пробел)

Но если я нахожусь в диске окон

cd /mnt/d/VirtualNes/
ls >list.txt

Затем я получаю файл простого текста в одной строке

Таким образом, как получить файл, каждая строка которого содержат один объект без пустого пробела?

1
задан 15 August 2017 в 22:16

2 ответа

Когда у нас были механические печатающие устройства...

было две вещи,

  1. Возврат каретки, который положил обратно ролик, когда он достиг правого поля и
  2. Перевод строки, который переместил ролик вверх так, чтобы главы типа не переписывали существующую строку, но писали на новой строке.

https://stackoverflow.com/questions/6521685/why-does-windows-use-cr-lf

Здесь является более длительным объяснением истории и некоторых деталей о кодах LF и CR: http://penguinpetes.com/b2evo/index.php?title=argh_microsoft_notepad_crlf_argh

Даже сегодня...

Windows использует коды CR/LF в конце каждой строки, в то время как Ubuntu (Linux в целом) использует просто код LF.

при открытии текстового файла, сгенерированного Ubuntu, реальным, виртуальным, или Windows Subsystem для Linux (WSL), файл будет выглядеть хорошо. При открытии того же файла в Windows все строки вместе.

, Что можно сделать?

Первый, проверьте, что текстовый файл создал WSL, на самом деле имеют имена файлов в отдельных строках:

cd /mnt/d/VirtualNes/
ls >list.txt
cat list.txt

последняя строка отображает содержание list.txt в терминале Ubuntu. Необходимо видеть, что файл выглядит хорошо.

Ubuntu идет с на терминальном основанным нано текстового редактора. Можно использовать его для редактирования текстового файла вместо Блокнота:

nano list.txt

, С другой стороны, при открытии того же файла в Windows с помощью notepad.exe, например, Вы будете видеть смешанные строки. Вы получите те же результаты, если Вы создадите подобный файл в "реальной" Ubuntu, и открытый находится в Windows.

, Если Вы хотите открыть текстовые файлы, созданные в Ubuntu в Windows, необходимо будет преобразовать код LF в конце каждой строки к коду CR/LF. Можно сделать это в подсказке Windows CMD (не терминал Ubuntu) путем ввода:

TYPE list.txt | MORE /P > win_list.txt

Вы получите новый файл win_list.txt, который откроется правильно в Windows.

существуют другие способы сделать это, такой как unix2dos и dos2unix утилиты. В Ubuntu можно установить оба этих 2 утилиты следующей командой:

sudo apt install dos2unix

См. https://stackoverflow.com/questions/17579553/windows-command-to-convert-unix-line-endings и https://stackoverflow.com/questions/3891076/how-to-convert-windows-end-of-line-in-unix-end-of-line-cr-lf-to-lf для больше.

Hope это помогает

3
ответ дан 7 December 2019 в 12:32

Это - побочный эффект использования notepad.exe. Блокнот является очень простым редактором двоичного файла, и он основан на приложении блокнота MS-DOS. Это требует CR/LF для новых строк, вместо просто LF, как Linux и приложения Linux (и таким образом, Windows Subsystem для Linux/Bash на Ubuntu в Windows). Таким образом, это покажет все на одной строке, так как это никогда не видит CR/LF.

Другие приложения считают его правильно. Wordpad.exe считает вывод ls, как Вы ожидаете. Как будет Word. Или IE. Или Chrome. Или любое современное программное обеспечение разработано в прошлое десятилетие.

Можно работать вокруг этого на notepad.exe путем передачи по каналу его к преобразователю.

unix2dos разработан, чтобы сделать это. Или используйте другие команды, как sed. Пример:

ls | sed -e 's/\r*$/\r/' > list.txt

Добавит CR к LF в конце, и notpad покажет файл правильно.

0
ответ дан 7 December 2019 в 12:32

Другие вопросы по тегам:

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