我有一个来自数据库的 3GB csv 文件,每一行应该是这样的条目:
一个数字(3到8位的整数);一个数字(2到8位的整数);一个字符串;一个日期时间;一个字符串;一个字符串
不幸的是有这样的断线:
9;13;string;2022-04-01 08:23:39.500;some string which is<cr><lf> broken<cr><lf> into multiple lines;string<cr><lf>
你能推荐一个正则表达式来找到损坏的模式并在一行中重新组合各个部分吗? 任何建议都值得赞赏,无论是使用 sed、awk、python 甚至 powershell。
我尝试使用notepad++和lookaheads使用一个小样本,但我需要自动修复3GB文件中的所有问题,并且换行符的数量是可变且未知的。
这是一个重建记录的小 awk,丢弃不需要的 CRLF(或 LF):
awk -F';' '
{
$0 = r $0
if ( NF == 6 ) {
print
r = ""
} else {
sub("\r$","")
r = $0
}
}
' file.scsv