我的数据集看起来像这样:
Input
Cat 2 1 aa
Dog 1 0 aa
Dog 1 2 aa
Cat 2 7 aa
Mouse 0 0 aa
Cat 1 5
Dog 4 3
. . .
. . .
. . .
Cat 1 5
Dog 4 3
Cat 6 9 bb
Dog 3 1 bb
Dog 3 6 bb
Cat 6 4 bb
Mouse 0 0 bb
使用此数据集,我想执行以下操作:
如果第4列不为空白,则仅使用第1列和第4列的每个组合打印第一次出现的记录。
输出
Cat 2 1 aa
狗1 0 aa
鼠标0 0 aa
Cat 1 5
狗4 3
。 。 。
。 。 。
。 。 。
Cat 1 5
狗4 3
Cat 6 4 bb
狗3 1 bb
鼠标0 0 bb
请注意,这里:“Cat 2 1 aa”是第一列,第1列= cat,第4列= aa,因此打印出来。 “cat 1 5 aa”未打印,因为我们已经有第1列= cat和第4列= aa的记录。
答案 0 :(得分:1)
使用awk:
awk '$4 == "" || !a[$1,$4]++' input
结果:
Cat 2 1 aa
Dog 1 0 aa
Mouse 0 0 aa
Cat 1 5
Dog 4 3
. . .
. . .
. . .
Cat 1 5
Dog 4 3
Cat 6 9 bb
Dog 3 1 bb
Mouse 0 0 bb