Sau đây chỉ đơn giản là một sự điều chỉnh cho câu trả lời từ @tripleee
để nó loại bỏ bất kỳ trích dẫn nào từ trường cuối cùng giống như tất cả các trường khác.
Để hiển thị những gì đang được sửa chữa, dưới đây là một tripleee 's câu trả lời, cộng với một sửa đổi nhỏ để dữ liệu ví dụ của OP với trích dẫn thêm xung quanh trận chung kết' Z trường '.
echo 'A,,C,"D,E,F","G",I,"K,L,M","Z"' | sed -r -e 's/("([^"]*)")?,/\2\t/g'
A C D,E,F G I K,L,M "Z"
Bạn có thể thấy rằng ' Z ' được để lại với các trích dẫn xung quanh nó. Điều này khác với cách các trường bên trong được xử lý. Ví dụ: ' G ' không có dấu ngoặc kép trên đó.
Lệnh sau sử dụng thay thế thứ hai để làm sạch cột cuối cùng:
echo 'A,,C,"D,E,F","G",I,"K,L,M","Z"' | sed -r -e 's/("([^"]*)")?,/\2\t/g' \
-e 's/\t"([^"]*)"$/\t\1/'
A C D,E,F G I K,L,M Z