Выбор строк в CSV файле на основе значения столбца, содержащего встроенную запятую

У меня есть CSV файл (CSV UTF-8 (Comma delimited) (. csv)) с 5 столбцами: данные клиента, имя клиента, email клиента, причина отмены, комментарии причины отмены

Как мне отфильтровать строки, в которых в столбце причины отмены есть "Хотел получить товар позже, решил не получать его позже", а затем прочитать их в новый файл input1.csv?

Ниже приведено то, что я пробовал, но input1.csv получился пустым:

awk -F , '$4 == "Wanted item later, choose not to get it later" { print }' input.csv > input1.csv

Вот пример ввода из файла input.csv:

cancellation date,customer first name,customer email,cancel reason,cancel reason comments
1/22/17,aaaa,xxxxx@xxxxx.com,"Wanted item later, choose not to get it later", test
0
30.01.2017, 18:32
3 ответа

В соответствии с моим ответом на ваш предыдущий вопрос , используя csvkit и предполагая, что CSV правильно процитирован и использует запятые в качестве разделителей:

$ csvgrep -c "cancel reason" \
    -m "Wanted item later, choose not to get it later" input.csv >input1.csv

или

$ csvgrep -c 4 -m "Wanted item later, choose not to get it later" input.csv >input1.csv
1
28.01.2020, 02:46
grep -E ',"[^"]*,[^"]*"|"[^"]*,[^"]*",' input.csv > input1.csv
0
28.01.2020, 02:46

Похоже, вы ожидаете иметь 5 полей. Это позволит идентифицировать строки с большим количеством полей:

awk -F, 'NF > 5' input > output

Это не ищет специально запятую в четвертом поле.

0
28.01.2020, 02:46

Теги

Похожие вопросы