큰따옴표 안의 데이터에서 탭 문자를 제거합니다.

큰따옴표 안의 데이터에서 탭 문자를 제거합니다.

데이터 사이와 행이 끝나기 전에 추가 탭을 제거해야 합니다. 아래는 예시 레코드입니다. 레코드는 탭으로 구분됩니다. 문제는 이 데이터를 데이터베이스에 로드하려고 할 때 데이터에 있는 추가 탭 문자가 문제를 일으킨다는 것입니다. 추가 탭을 보려면 다음을 복사하여 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

화타이

관련 정보