考虑以下两个变量
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
cut
and调用rev
将首先删除前 11 列,然后反转数据并删除最后 10 列(现在反转后的前 10 列),然后再次反转。