第二行中的第一个字段与上一行匹配时的打印行

Wal*_*mer 0 bash awk grep sed

我有一个看起来像这样的文件:

f1 |  f2  | f3
---  ----  ---
T1 | 0.10 | tx1  
T1 | 0.32 | tx2  
T2 | 0.16 | tx1  
T2 | 0.56 | tx3
T2 | 0.90 | tx2  
Run Code Online (Sandbox Code Playgroud)

我想要的是将f1值与前一个值进行比较,如果匹配,则打印整行.此外,如果f1值出现超过2次,则只获得第二个,因此不允许重复.这只是一个例子,该文件包含3次,4次和5次f1,我也希望得到这些.

任何想法都是值得赞赏的,因为我还没有得到一个!我试过这段代码但是没有用:

awk '{ if ($1 != old)  print; old = $1; }' foo
Run Code Online (Sandbox Code Playgroud)

我的预期输出如下:

f1 |  f2  | f3
---  ----  ---  
T1 | 0.32 | tx2   
T2 | 0.56 | tx3
Run Code Online (Sandbox Code Playgroud)

Jam*_*own 5

像这样:

$ awk 'f1==$1&&hits[$1]==1{print}{f1=$1;hits[$1]++}' foo
T1 | 0.32 | tx2
T2 | 0.56 | tx3
Run Code Online (Sandbox Code Playgroud)