s/\ //g
CSV 파일에서 공백을 제거하고 싶습니다. 다음을 사용 "06-JAN-15 13:20:00"
하면 됩니다 ."06-JAN-1513:20:00"
한 가지 해결책은 모든 공백을 제거한 다음 날짜를 찾아 06-JAN-15
그 뒤에 공백을 추가하는 것입니다. 이 작업을 수행하는 방법을 잘 모르겠습니다.
샘플 CSV 파일: (한 줄만)
294335,"17-APR-15 00:00:00 ",6258,"C"," <-----huge blank space--->,"07-JAN-15 00:00:00"
huge blank space
비어 있지 않으면 XML 메시지가 포함됩니다.
답변1
(?<!...)
sed는 아니지만 Perlre에서 부정적인 LookBehind 어설션을 사용하는 솔루션이 있습니다.
perl -pe 's/(?<!\d\d-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-\d\d) //g'
답변2
사용밀러( mlr
) 데이터의 공백을 정리하려면 다음을 수행합니다.
$ cat file
294335,"17-APR-15 00:00:00 ",6258,"C"," ","07-JAN-15 00:00:00"
$ mlr --csv -N clean-whitespace file
294335,17-APR-15 00:00:00,6258,C,,07-JAN-15 00:00:00
$ mlr --csv -N --quote-all clean-whitespace file
"294335","17-APR-15 00:00:00","6258","C","","07-JAN-15 00:00:00"
mlr
별도로 지정하지 않는 한 불필요한 따옴표를 제거 하십시오 --quote-all
.모두필드). 이 -N
옵션을 사용하면 Miller는 첫 번째 줄을 헤더 대신 데이터 레코드로 읽습니다.
답변3
사용 awk
:
< input awk 'BEGIN {FS=OFS=","} {gsub(" ", "", $1); gsub(" ", "", $3); gsub(" ", "", $4); gsub(" ", "", $5); print}'
이렇게 하면 각 레코드의 쉼표로 구분된 첫 번째, 세 번째, 네 번째 및 다섯 번째 필드에서 공백 문자가 제거되는 효과가 있습니다.
답변4
실제로 이 파일을 CSV 파일로 구문 분석하고 추가 공백을 제거할 수 있습니다.
ruby -rcsv -ne '
row = CSV::parse_line($_)
puts CSV::generate_line(row.map {|field| field.strip})
' file
294335,17-APR-15 00:00:00,6258,C,"",07-JAN-15 00:00:00