Преобразование нескольких файлов из всех возможных EOL в CRLF

У меня есть файлы со всеми мыслимыми EOL. Я хочу нормализовать их за один раз, а не делать их одну за другой, поскольку речь идет о нескольких тысячах. Я знаю, как делать их вручную, поэтому, пожалуйста, не объясняйте это.

Я думаю, что все возможные, от наиболее распространенных к наименее распространенным: CRLF, LF, CR-CRLF, CRCR-CRLF, CR, LFLF, CRCR, CRLF-CRLF и CRCRCR-CRLF (да, есть один файл).

Все файлы имеют одинаковый EOL, в одном файле нет смешанных. После исправления могут остаться нечетные CR или LF, их можно не трогать.

Я хочу, чтобы все файлы имели только CRLF. Пустые строки должны оставаться нетронутыми.

Во-первых, я думаю, мне нужно хорошее определение того, что такое EOL в каждом файле. Он мог бы проверить, что он повторяется не менее 3 раз, но некоторые имеют только одну строку.

Здесь я сделал несколько черновых файлов, все они должны выглядеть как CRLF, когда это будет сделано (внутри только файлы TXT): https://www71.zippyshare.com/v/BNpRAijy/file.html

Я гуглил целый день и не нашел хорошего решения.

Примеры

<сильный>1. просто CRLF EOL, результат, который я хочу от всех:

строка1CRLF

линия2CRLF

CRLF

строка3CRLF

строка4CRLF

CRLF

CRLF

линия5CRLF

CRLF

CRLF

CRLF

строка6CRLF

CRLF

<сильный>2. CRCRLF: вручную я заменил бы CRCRLF на CRLF, \r\r\n на \r\n и повторил бы снова для файлов с CRCRCRLF и еще раз для этого одинокого CRCRCRCRLF. Но проблема в том, что не все файлы имеют именно эту возможность, есть еще 5, которые я перечислил выше. Хотя просто LF и просто CR здесь не так уж проблематично, так как Блокнот Windows теперь поддерживает Unix и MAC EOL, но все же было бы неплохо их включить.

Таким образом, основной проблемой остается LFLF, а затем следует рассмотреть еще несколько CRCR и CRCR-CRLF. Лучше всего было бы включить все возможности.

строка1CR

CRLF

строка2CR

CRLF

CR

CRLF

строка3CR

CRLF

строка4CR

CRLF

CR

CRLF

CR

CRLF

строка5CR

CRLF

CR

CRLF

CR

CRLF

CR

CRLF

строка6CR

CRLF

CR

CRLF


person GrimReaper    schedule 20.04.2020    source источник
comment
Я думаю, вам нужно написать программу, которая посещает каждый файл по очереди. Он прочитает первые несколько строк и определит формат разрыва строки этого файла, а затем обработает его соответствующим образом. Это не работа для Notepad++.   -  person AdrianHHH    schedule 21.04.2020
comment
Спасибо, написал на Python. Я просто шучу, у знакомого программиста это уже было, я просто хотел узнать, есть ли простой способ в Notepad++.   -  person GrimReaper    schedule 21.04.2020


Ответы (1)


С помощью Notepad++ вы можете:

  • Ctrl+Shift+F
  • Найдите что: \R+
  • Заменить на: \r\n

Где \R+ означает 1 или более любых разрывов строки.

Скриншот:

введите здесь описание изображения

person Toto    schedule 20.04.2020
comment
Может быть, это начало, но это удаляет все пустые строки, что мне не подходит. Пожалуйста, если у вас есть время, постарайтесь, чтобы по крайней мере 7 из перечисленных мной файлов соответствовали CRC32 или CRLF. Я совершенно уверен, что это должно быть намного сложнее, чем это. - person GrimReaper; 20.04.2020
comment
@GrimReaper: вместо того, чтобы давать ссылку на неизвестный файл, отредактируйте свой вопрос и добавьте несколько примеров строк и ожидаемый результат . Добавьте также все ограничения, вы не сказали, что не хотите удалять пустые строки. - person Toto; 20.04.2020