首页 > 解决方案 > Unix:如何搜索出现在 csv 列中的单词

问题描述

我有一个包含两列的 csv 数据集,看起来像这样

Andrew, hello I'm from Germany
Andy,   I'm from Cambodia
Arthur, I come from Hong Kong
Alec,   I'm of african descent
Richard,I'm chinese
Tess,   I'm Tess, i also come from Cambodia

如果我想在这个 csv 的第二列中搜索关键字“柬埔寨”并返回类似的内容

Andy,   I'm from Cambodia
Tess,   I'm Tess, i also come from Cambodia

我试过 $ cut -d ',' -f1,2 file | grep -i "\bcambodia\b" 但是这段代码也搜索第一列,我不想要,我只想搜索第二列,我想在输出中保留第一列

标签: unixgrepcygwin

解决方案


您可以考虑awk使用逗号作为分隔符

$ awk -F, '/Cambodia/ && $1 !~ /Cambodia/' input_file
Andy,   I'm from Cambodia
Tess,   I'm Tess, i also come from Cambodia

通过使用,分隔符,您可以排除与字符串匹配的第 1$1 !~ /Cambodia/列,同时匹配将包含该字符串的所有其他列


推荐阅读