根据包含嵌入逗号的列值选择 CSV 文件中的行

根据包含嵌入逗号的列值选择 CSV 文件中的行

我有一个 CSV 文件(CSV UTF-8(逗号分隔)(.csv)),包含 5 列:客户数据、客户名字、客户电子邮件、取消原因、取消原因评论

如何过滤取消原因列中具有“稍后想要的项目,选择稍后不再获取”的行,然后将其读入名为 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,[email protected],"Wanted item later, choose not to get it later", test

答案1

与我的回答一致你之前的问题, 使用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

答案2

您似乎期望有 5 个字段。这将识别具有更多字段的行:

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

这并不专门在第四个字段中查找逗号。

答案3

grep -E ',"[^"]*,[^"]*"|"[^"]*,[^"]*",' input.csv > input1.csv

相关内容