데이터 사이와 행이 끝나기 전에 추가 탭을 제거해야 합니다. 아래는 예시 레코드입니다. 레코드는 탭으로 구분됩니다. 문제는 이 데이터를 데이터베이스에 로드하려고 할 때 데이터에 있는 추가 탭 문자가 문제를 일으킨다는 것입니다. 추가 탭을 보려면 다음을 복사하여 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 캐릭터 에 . 외곽 지역 은 영향을 받지 않았습니다.\t
TAB
TAB
sed
POSIX
TABs
%
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
화타이