需要打印与 CSV 文件中的两个变量匹配的特定行的第 12 列的值

需要打印与 CSV 文件中的两个变量匹配的特定行的第 12 列的值

考虑以下两个变量

DC="777777"
CountryCode="IN"

有一个 CSV 文件,fileSB.csv.我找到了一个命令(如下)来搜索DC第二列中的变量名称和CountryCode第四列中的变量名称。仅当两个变量在同一行中匹配时,才会打印该特定行。

现在我的要求是,在使用以下命令检测到的同一行/行中,我只想打印第 12 列中存在的值。这里的问题是第 12 列中可以有任意数量的逗号,因此无法打印第 12 列中的值

打印与文件名中两个变量值匹配的行的命令fileSB.csv

awk -v pat1="$DC" -v pat2="$CountryCode" -F, '($2==pat1&&$4==pat2)' fileSB.csv

摘要:需要从 的逗号分隔输出中获取第 12 列awk,该列可以包含任意数量的逗号,后面是另外 10 列。

答案1

根据下面的注释,第 12 列包含可变数量的逗号分隔项,后面还有 10 列。

awk -v pat1="$DC" -v pat2="$CountryCode" -F, '$2 == pat1 && $4 == pat2' fileSB.csv |
cut -d, -f 12- | rev | cut -d, -f 11- | rev

cutand调用rev将首先删除前 11 列,然后反转数据并删除最后 10 列(现在反转后的前 10 列),然后再次反转。

相关内容