다음과 같은 CSV 파일이 있습니다.
HEADER
"first, column"|"second "some random quotes" column"|"third ol' column"
FOOTER
다음과 같은 결과를 찾습니다.
HEADER
first, column|second "some random quotes" column|third ol' column
즉, "FOOTER"를 제거하면 시작, 끝 및 주위의 따옴표가 |
지금 까지이 코드는 작동합니다.
sed '/FOOTER/d' csv > csv1 | #remove FOOTER
sed 's/^\"//' csv1 > csv2 | #remove quote at the beginning
sed 's/\"$//' csv2 > csv3 | #remove quote at the end
sed 's/\"|\"/|/g' csv3 > csv4 #remove quotes around pipe
보시다시피 문제는 4 개의 추가 파일을 생성한다는 것입니다.
추가 파일을 만들지 않고 단일 스크립트에서 동일한 작업을 수행하는 목표를 가진 또 다른 솔루션이 있습니다. 잘 작동하지 않습니다.
#!/bin/ksh
sed '/begin/, /end/ {
/FOOTER/d
s/^\"//
s/\"$//
s/\"|\"/|/g
}' csv > csv4
sed
은 단순화 된 CSV로만 작동하지 않을 것입니다. 실제 CSV 파일 (Python / Perl / Ruby)을 처리 할 수있는 라이브러리와 함께 프로그래밍 언어를 사용하십시오.