首页 > 解决方案 > 检查第 1 列的值是否存在于第 2 列的任何位置,将结果写入第 3 列(CSV 文档)

问题描述

我正在寻找一种方法来检查第一列(产品名称)的值是否存在于第二列(产品变体)中的任何位置,并将结果(匹配/不匹配)写入 CSV 文档的第三列。

由于此任务可能会重复出现,因此我想开始为此编写脚本。

csv 文档当前的结构如下(第三列不包含匹配项):

"PRODUCT";"VARIANT";"MATCH"
"100 DG";"black";""
"100 DG";"100 DG black";""
"100 DG";"silver 100 DG";""
"100 DG";"silver 100 DG US edition";""
...

结果应如下所示:

"PRODUCT";"VARIANT";"MATCH"
"100 DG";"black";"no"
"100 DG";"100 DG black";"yes"
"100 DG";"silver 100 DG";"yes"
"100 DG";"silver 100 DG US edition";"yes"
...

所以,我想将结果写入第三列:

我有一段时间没有做过这种事情了,感谢您的帮助。

标签: regexbashcsvcomparisonsh

解决方案


与米勒(https://github.com/johnkerl/miller)是

mlr --csv --fs ";" put -S 'if ($VARIANT=~$PRODUCT) 
{$MATCH="yes"} 
    else 
{$MATCH="no"}' input_01.csv

或在一行中

mlr --csv --fs ";" put -S 'if ($VARIANT=~$PRODUCT) {$MATCH="yes"} else {$MATCH="no"}' input_01.csv

推荐阅读