Có tệp CSV như thế này:
HEADER
"first, column"|"second "some random quotes" column"|"third ol' column"
FOOTER
và tìm kiếm kết quả như:
HEADER
first, column|second "some random quotes" column|third ol' column
nói cách khác, loại bỏ "BÓNG ĐÁ", trích dẫn ở đầu, cuối và xung quanh |.
Cho đến nay mã này hoạt động:
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
Như bạn thấy vấn đề là nó tạo thêm 4 tệp.
Đây là một giải pháp khác, có một mục tiêu là không tạo thêm tệp và thực hiện điều tương tự trong một tập lệnh. Nó không hoạt động rất tốt.
#!/bin/ksh
sed '/begin/, /end/ {
/FOOTER/d
s/^\"//
s/\"$//
s/\"|\"/|/g
}' csv > csv4
sed
sẽ không làm việc với điều đó, chỉ với csv đơn giản hóa. Sử dụng ngôn ngữ lập trình với thư viện có thể xử lý các tệp CSV thực (Python / Perl / Ruby).