从双引号内的数据中删除制表符

从双引号内的数据中删除制表符

我需要删除数据之间和行尾之前的额外选项卡。下面是一个示例记录。该记录是一个制表符分隔的。问题是当我尝试将此数据加载到数据库中时,数据中存在的额外制表符导致了问题。要查看额外的选项卡,请复制以下内容并粘贴到 Notepad++ 中以了解问题。有什么方法可以删除“”“”包含的数据和 EOL 之前的选项卡之间的选项卡。

"88115082436608 2018-12-07 02:32:08 4282    CTYGGJG BANK                    United States           FTFVGHVHGG|SRDRGFGFGHFG - CATATSSS-WC - TYTY - Relevant World-Check     2018-12-07 02:32:34 TYTUYUIIHHHIHUIH    GUGUUIUHUH BANK     UHJBJBHJGHUH    HGGGG   USA UUHHUIIKHJ BANK"    " JHHHNJMNJ|COMPANY BANK|COMPANY OF YUIUHIH 0.37495 Medium  0   1   Immaterial      User Adjudicated    ""additionally below are the mitigation factors. 1. The hits are more than uyhyhuh old"                                                                                                                                                                                                                                                 
2. The entity has yuyyiy into. 3. It belongs to a well known                                                                                                                                                                                                                                                        
and bhjhjhhijji and has diverse ghjhjjhiujh in many locations    therefore   the well                                                                                                                                                                                                                                               
"standing and uhyuhiuiui of the GHGHUGYG is considered.""   11492381    [email protected]   13904028    997380"                                                                                                                                                                                                                                                     

答案1

您可以通过多种方式完成此操作,其中一些如下所示:

使用sed编辑器,您可以按如下方式执行此操作(假设记录具有平衡双引号),并且我正在显示\t一个TAB字符,您可能必须使用文字TAB来代替该字符,以防万一您sedPOSIX.我正在将TABs双引号内的所有内容转换为%字符 YMMV。边远地区TABs没有受到影响。

$ sed -e '
   /\n/!y/"/\n/
   /\n/{
      s//"/;s//"/
      :loop
         s/\(".*\)\t\(.*"\)/\1%\2/
      tloop
      /\n/!b
      H;s/.*//;x;D
   }
' input.file

使用使Perl事情变得相当简单:

$ perl -lpe 's/(?<=")(.*?)(?=")/$1 =~ y[\t][%]r/eg' input.file

华泰

相关内容