我有一组大型数据文件需要批量加载到数据库中。数据线是管道分隔但也使用引号逗号"描述文本条目。问题是许多文本块还包括一个或多个附加的"除了字段开头/结尾处的字符之外的字符,这会破坏导入。
我正在寻找一个正则表达式,它允许我在文件中找到包含两个以上的行"每组||之间的字符分隔符。
例如
123 |"史密斯先生" | 456 |"没有额外的引号,此行很好" | 789
123 |"琼斯先生" | 456 |"这个有"额外的引号",不太好" | 789
123 |"琼斯先生" | 456 |"甚至还有一个"是一个问题" | 789
我需要找到类似上面第二个和第三个的行。
任何帮助表示赞赏!
由于
答案 0 :(得分:0)
可以通过将输出管道输出到awk来完成,如下所示。假设输入中的管道确实出现在每行的开头和结尾。
| awk -F'|' 'BEGIN{OFS="|";}{ \
for (i = 1; i <= NF; i++) { \
if (gsub(/"/, "\"", $i) > 2) { \
print; break; \
}; \
}; \
}'