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



>我有一组大型数据文件,我需要将其批量加载到数据库中。数据线为管道 |分隔,但也使用倒逗号"来描绘文本条目。问题是许多文本块还包含一个或多个额外的"字符,而不是字段开头/结尾的字符,这会破坏导入。

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

例如

123|"史密斯先生"|456|"没有多余的反逗号,这行很好"|789

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

123|"琼斯先生"|456|"即使多一个"有点问题"|789

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

任何帮助感谢!

谢谢

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

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

最新更新