二重引用符内のデータからタブ文字を削除します。

二重引用符内のデータからタブ文字を削除します。

データ間と行が終わる前に、追加のタブを削除する必要があります。以下はサンプルレコードです。レコードはタブで区切られます。問題は、このデータをデータベースにロードしようとすると、データ内の追加のタブ文字が問題を引き起こすことです。追加タブを表示するには、次をコピーして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。 YMMVキャラクターに。郊外は影響を受けませんでした。\tTABTABsedPOSIXTABs%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

ファタイ

関連情報