如果后续行短于 X 个字符,则从文本文件中删除 CR

Remove CR from text file if subsequent line is shorter than X characters

我有一个巨大的 text/csv 文件,大小为 6 GB。 创建时发生错误,一些换行符 (CRLF) 尚未从字段中删除,因此某些行被破坏

这里是简化版:

例如

Field1<TAB>Field2<TAB>Field3<TAB>Field4
Field1<TAB>Field2<TAB>Field3<TAB>Field4
Field1<TAB>Field2<TAB>Field3
<TAB>Field4
Field1<TAB>Field2<TAB>Field3<TAB>Field4

所以第 3 行的字段 3 有一个 CR,因此该行中断

我不想重新创建 CSV 文件,这会花费太长时间,但必须有一种方法可以解决这个问题,也许可以借助正则表达式和工具。

识别断线很容易。它们的长度少于 50 个字符。 所有好的行都超过 50 个字符

所以我需要一个步骤: * 识别短线 * 删除该行前面的 CRLF * 对整个文件执行此操作

我可以在 UltraEdit 中创建宏并搜索 Perl Regex

^.{0,50}$ 

并替换前面的CRLF。那行得通,但花费的时间太长了。 UltraEdit 中的宏很方便但很慢。

还有别的方法吗?我可以使用正则表达式和一些工具来 search/replace 吗?

谢谢, 沃尔夫冈

您可以搜索:

^(.{1,50})\n(.{1,50}\n)

并替换为:


演示(对于 30 个字符或更少的虚线):https://regex101.com/r/pr5JhW/1