正则表达式,用于在分隔符之间查找两次以上的字符

时间:2016-03-07 10:15:56

标签: regex

我有一组大型数据文件需要批量加载到数据库中。数据线是管道分隔但也使用引号逗号"描述文本条目。问题是许多文本块还包括一个或多个附加的"除了字段开头/结尾处的字符之外的字符,这会破坏导入。

我正在寻找一个正则表达式,它允许我在文件中找到包含两个以上的行"每组||之间的字符分隔符。

例如

123 |"史密斯先生" | 456 |"没有额外的引号,此行很好" | 789

123 |"琼斯先生" | 456 |"这个有"额外的引号",不太好" | 789

123 |"琼斯先生" | 456 |"甚至还有一个"是一个问题" | 789

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

任何帮助表示赞赏!

由于

1 个答案:

答案 0 :(得分:0)

可以通过将输出管道输出到awk来完成,如下所示。假设输入中的管道确实出现在每行的开头和结尾。

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