Форум UltraEdit содержит темы
Find lines in CSV file with less or more than X tabs within a line
How to find line breaks in fields of a CSV file and remove it?
, которые обсуждают эту общую проблему в CSV-файлов.
С помощью строки поиска регулярного выражения Perl ^((?!(?:[^;\r\n]*;){18}).*)\r*\n
и с использованием \1
в качестве замены строки вы можете устранить разрывы строк на линиях с менее чем 18 точками с запятой (19 столбцов данных).
Запустите эту замену вручную, а не заменяйте все. Все строки данных, которые имеют несколько разрывов строк, будут отформатированы неправильно с использованием «Заменить все».
Пример:
a1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;1
8;19
b1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
c1;2;3;4;5;6;7;8;9;1
0;11;12;13;14;15;16;17;1
8;19
d1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
должен стать
a1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
b1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
c1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
d1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
и не
a1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
b1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
c1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;1
8;19d1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19
Так что будьте осторожны с заменить и установить каретку в файле обратно к выше во время линии замена выполняется шаг за шагом, если строка данных имеет несколько разрывов строк.
С макросом UltraEdit можно зафиксировать все разрывы строк в строках данных автоматически.
Макрос код:
InsertMode
ColumnModeOff
HexOff
Top
PerlReOn
Loop 0
Find MatchCase RegExp "^((?!(?:[^;\r\n]*;){18}).*)\r*\n"
Replace "\1"
IfFound
Key HOME
Else
ExitLoop
EndIf
EndLoop
Top
Ваш пример сломана. Кроме того, не могли бы вы объяснить, что вы подразумеваете под «деформированием»? – Spikeh