2016-03-07 91 views
0

我有一组需要批量加载到数据库中的大数据文件。数据行是pipe |但是也使用引号“来描述文本条目,问题在于许多文本块还包括一个或多个额外的”字符,而不是在字段的开始/结尾处的字符,这正打破了导入。正则表达式在分隔符之间查找两个以上的字符

我希望找到一个正则表达式,让我找到包含每组||分隔符之间的两个以上的“字符的文件中的行

例如

123。| “史密斯先生” | 456 |“没有多余的引号,这条线路是好的” | 789

123 |“琼斯先生” | 456 |“这其中有‘额外的引号’,不是那么好” | 789

123 |“琼斯先生”| 456 |“即使是一个额外的”有点问题“| 789

我需要找到像上面第二个和第三个的行。

任何援助赞赏!

谢谢

+1

您使用的是什么引擎? – Shafizadeh

+0

请格式化您的输入字符串示例 – user2148124

+0

还有什么你已经尝试过? –

回答

0

它可以通过管道输出到awk如下完成。假定输入中的管道确实出现在每行的开始和结束处。

| awk -F'|' 'BEGIN{OFS="|";}{ \ 
    for (i = 1; i <= NF; i++) { \ 
    if (gsub(/"/, "\"", $i) > 2) { \ 
     print; break; \ 
    }; \ 
    }; \ 
}' 
+0

谢谢你,这是一种享受! – Blimbeard

+0

很高兴,它帮助。 – soumen

相关问题