如果后续行短于 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
我有一个巨大的 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