AWK:根据特定字段值的出现情况,忽略按唯一值分组的行
如果需要,请帮助修改标题和帖子,谢谢 简言之,我希望首先在第一个字段中使用唯一值对行进行分组,然后在基础行组的另一个字段中累积特定值的出现次数。如果出现次数的总和不符合自定义阈值,则应忽略组中的行 具体来说,有了投入AWK:根据特定字段值的出现情况,忽略按唯一值分组的行,awk,split,pattern-matching,conditional-statements,find-occurrences,Awk,Split,Pattern Matching,Conditional Statements,Find Occurrences,如果需要,请帮助修改标题和帖子,谢谢 简言之,我希望首先在第一个字段中使用唯一值对行进行分组,然后在基础行组的另一个字段中累积特定值的出现次数。如果出现次数的总和不符合自定义阈值,则应忽略组中的行 具体来说,有了投入 111,1,P,1 111,1,P,1 111,1,P,0 111,1,M,1 222,1,M,1 222,1,M,0 333,1,P,0 333,1,P,1 444,1,M,1 444,1,M,1 444,0,M,0 555,1,P,1 666,1,P,0 所需的输出应为 11
111,1,P,1
111,1,P,1
111,1,P,0
111,1,M,1
222,1,M,1
222,1,M,0
333,1,P,0
333,1,P,1
444,1,M,1
444,1,M,1
444,0,M,0
555,1,P,1
666,1,P,0
所需的输出应为
111,1,P,1
111,1,P,1
111,1,P,0
111,1,M,1
333,1,P,0
333,1,P,1
555,1,P,1
666,1,P,0
这意味着“由于第一个字段222
和444
中的唯一值在第三个字段中没有至少一个(可以是任何期望的阈值)p
,因此忽略与222
和444
对应的行。”
此外,这应该在不编辑原始文件的情况下完成,并且必须与已解决的问题相结合。通过这样做,结果分割文件中将不会涉及几行内容。我相信这一行内容满足了您的要求:
$ awk -F, '{a[$1,++c[$1]]=$0}$3=="P"{p[$1]}END{for(i in c)if(i in p)for(j=1;j<=c[i];++j)print a[i,j]}' file
111,1,P,1
111,1,P,1
111,1,P,0
111,1,M,1
333,1,P,0
333,1,P,1
555,1,P,1
666,1,P,0
$awk-F,'{a[$1,++c[$1]]=$0}$3==“P”{P[$1]}END{for(i in c)如果(i in P)for(j=1;j