如果后一行少于X个字符,请从文本文件中删除CR

时间:2018-10-24 06:48:25

标签: regex csv text-files ultraedit

我有一个巨大的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中的宏很方便,但是非常慢。

还有其他方法吗?我可以将正则表达式与某些工具一起使用来进行搜索/替换吗?

谢谢, 沃尔夫冈

1 个答案:

答案 0 :(得分:1)

您可以搜索:

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

并替换为:

$1$2

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