notepad ++ помещает текст после возврата каретки на новую строку

У меня есть два файла, A и B, одинаковой длины. N-я строка в файле A соответствует n-й строке в файле B. Иногда в файле A для перезаписи текста в той же строке использовался возврат каретки. При открытии файлов в блокноте ++ файл A имеет больше строк, чем файл B, потому что текст после возврата каретки помещается на новую строку, а notepad ++ увеличивает номер строки. Это затрудняет поиск соответствующих строк между файлами A и B.

Пример

line number|File A    ||line number|File B
      1    |a\r\n     ||      1    |x\r\n
      2    |b\r       ||      2    |y\r\n
      3    |c\r       ||      3    |z\r\n
      4    |d\r\n     ||
      5    |e\r\n     ||

В обоих файлах на самом деле всего три строки. 'a \ r \ n' соответствует 'x \ r \ n', 'b \ rc \ rd \ r \ n' (или просто 'd \ r \ n') соответствует 'y \ r \ n' и ' e \ r \ n 'соответствует' z \ r \ n '. Однако в файле A 'b \ rc \ rd \ r \ n' начинается в строке номер 2 и заканчивается в строке номер 4 из-за возврата каретки.

Может ли блокнот ++ применить возврат каретки, чтобы в файле A отображались только «a», «d» и «e»? Если нет, возможно ли, чтобы номера строк увеличивались только после символа новой строки, так что номера строк между файлами A и B выровнены?


person MAcabot    schedule 22.05.2014    source источник
comment
У тебя есть устаревшие данные, сынок.   -  person    schedule 22.05.2014


Ответы (1)


Вы можете просто удалить все символы \r, чтобы быстро выровнять оба файла. Перейдите к «заменить», переключитесь в расширенный режим и ничего не замените \r. Затем [Правка]> [Преобразование EOL]> [Формат Windows], чтобы вернуться к окончанию строки \ r \ n (у вас останутся только \ n).

Если вы не хотите «применять» все символы возврата каретки, вам придется использовать RegEx. Переключитесь на «регулярное выражение» в замене и ничего не замените:

^.+\r(?!\n)

Он удалит все \r, за которыми не следует \n, и всю строку.

person AdamL    schedule 22.05.2014
comment
Спасибо за ответ. Я считаю, что применение вашего регулярного выражения - это не то же самое, что применение возврата каретки, т.е. запись следующего символа в начале строки. Например, «abc \ rx \ r \ n» должно привести к «xbc \ r \ n», а ваше регулярное выражение даст «x \ r \ n». - person MAcabot; 22.05.2014
comment
@MAcabot Разве вы не имеете в виду, что это должно привести к abx\r\n? Тогда .\r(?!\n) должен это сделать? - person user694733; 23.05.2014
comment
@MAcabot Вы правы. Боюсь, в этом случае вы не можете использовать регулярное выражение, и вам придется решать это программно ... - person AdamL; 23.05.2014