我有以下文件
ID Score Other
ABR 0.98 NBNMSB
BCG 0.76 NBNMSB
CVD 0.6 NBNMSB
BCG 0.9 VSCVA
CVD 0.56 VSCVA
ABR 0.9 VSCVA
CVD 0.7 BAVSC
BCG 0.4 BAVSC
ABR 0.5 BAVSC
AAC 0.1 BAVSC
ABR 0.8 NBNMSB
BCG 0.6 NBNMSB
CVD 0.3 NBNMSB
BCG 0.7 VSCVA
CVD 0.0 VSCVA
ABR 0.1 VSCVA
CVD 0.5 BAVSC
BCG 0.8 BAVSC
ABR 1.0 BAVSC
我想排除第3列中值的第一个和最后一个出现,以便得到如下输出:
ID Score Other
BCG 0.76 NBNMSB
CVD 0.56 VSCVA
BCG 0.4 BAVSC
ABR 0.5 BAVSC
BCG 0.6 NBNMSB
CVD 0.0 VSCVA
BCG 0.8 BAVSC
如果有tac
(或gtac
),则可以删除第一个实例,反转文件,删除第一个(确实是最后一个)实例,最后一次翻转文件。
$ awk '$3==p;{p=$3}' file1 | tac | awk '$3==p;{p=$3}' | tac
BCG 0.76 NBNMSB
CVD 0.56 VSCVA
BCG 0.4 BAVSC
ABR 0.5 BAVSC
BCG 0.6 NBNMSB
CVD 0.0 VSCVA
BCG 0.8 BAVSC
编辑:
这是一个更灵活的版本。只需将的初始值设置c
为所需的列即可:
使用第3列:
c=3 && awk -v c=$c '$c==p;{p=$c}' file1 | tac | awk -v c=$c '$c==p;{p=$c}' | tac
使用第4栏:
c=4 && awk -v c=$c '$c==p;{p=$c}' file1 | tac | awk -v c=$c '$c==p;{p=$c}' | tac
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句