比较每行的多个列
Compare multiple columns for each row
使用 csv 文件,我想比较多个列以检查所有值是否相同。
第一行是 headers
第一列是标签
常数值应该是从第 2 列到末尾(可以是 100 列),例如我只放了 8 列。
目的是检查所有值是否相同。如果不是,报告
输入文件
Number,V2 1563,V03-1555,V4 - 294,V-05 1580,V6-1561,V7-1562,V05-1601,V9-1587
Code,4.1.06,4.1.03,4.1.06,4.1.06,4.1.06,4.1.06,4.1.06,4.1.06
Host Id,b90c27,b90c13,3.30E+65,b90c46,b90c21,b90c1f,b88a63,b90c49
SR,SR_2_MS,SR_2_MS,SR_4_MS,SR_2_MS,SR_2_MS,SR_2_MS,SR_2_MS,SR_2_MS
需要输出
Bad code in V03-1555
Bad SR in V4 - 294
感谢您的支持
awk
救援!
我即兴创作了一点。我们如何知道哪些值是正确的,哪些不是?大众投票,计算出现次数并假设多数是正确的。附带的好处是,如果所有值都与 "Host Id" 行中的值不同,则不会报告任何内容
$ awk -F, 'NR==1 {split([=10=],h); next}
{delete r;
for(i=2;i<=NF;i++) {r[$i]++; idx[$i]=i}
max=0;
for(k in r) if(max<r[k]) max=r[k];
if(length(r)>1)
for(k in r)
if(r[k]!=max)
print "Bad " " in " h[idx[k]] " -> " k}' file
returns
Bad Code in V03-1555 -> 4.1.03
Bad SR in V4 - 294 -> SR_4_MS
你可以把打印出来的值去掉,我放上去验证的。
使用 csv 文件,我想比较多个列以检查所有值是否相同。
第一行是 headers 第一列是标签 常数值应该是从第 2 列到末尾(可以是 100 列),例如我只放了 8 列。
目的是检查所有值是否相同。如果不是,报告
输入文件
Number,V2 1563,V03-1555,V4 - 294,V-05 1580,V6-1561,V7-1562,V05-1601,V9-1587
Code,4.1.06,4.1.03,4.1.06,4.1.06,4.1.06,4.1.06,4.1.06,4.1.06
Host Id,b90c27,b90c13,3.30E+65,b90c46,b90c21,b90c1f,b88a63,b90c49
SR,SR_2_MS,SR_2_MS,SR_4_MS,SR_2_MS,SR_2_MS,SR_2_MS,SR_2_MS,SR_2_MS
需要输出
Bad code in V03-1555
Bad SR in V4 - 294
感谢您的支持
awk
救援!
我即兴创作了一点。我们如何知道哪些值是正确的,哪些不是?大众投票,计算出现次数并假设多数是正确的。附带的好处是,如果所有值都与 "Host Id" 行中的值不同,则不会报告任何内容
$ awk -F, 'NR==1 {split([=10=],h); next}
{delete r;
for(i=2;i<=NF;i++) {r[$i]++; idx[$i]=i}
max=0;
for(k in r) if(max<r[k]) max=r[k];
if(length(r)>1)
for(k in r)
if(r[k]!=max)
print "Bad " " in " h[idx[k]] " -> " k}' file
returns
Bad Code in V03-1555 -> 4.1.03
Bad SR in V4 - 294 -> SR_4_MS
你可以把打印出来的值去掉,我放上去验证的。