shell 排序去重问题

用shell处理一个文本文件,内容如下:
fdf284
asd112
adf146
csb513
dfg576
asd346
adf263
csb092
dfg547
根据第一列去重,相同的保留第二列值最大的那个,结果数据应该是这样的:
fdf284
asd346
adf263
csb513
dfg576
看了下uniq命令,好像不支持按字段去重。请问该如何去重呢?
慕勒3428872
浏览 536回答 2
2回答

DIEA

方法一catdata.txt|sort-rnk2|awk'{if(!keys[$1])print$0;keys[$1]=1;}'先按照第二列逆序排列,保证数字从大到小输出,然后再用awk,只有第一列的字符串第一次出现才输出这个字符串,其他的丢弃,这样应该就可以解决问题了。但是这种方法可能会让awk占用很多的内存,文件过大的话有问题。方法二catdata.txt|sort-k1,1|awk'{if(lastKey==$1){if(lastValue

慕慕森

$sort-ra.txt|awk'{print$2,$1}'|uniq-f1|awk'{print$2,$1}'fdf284dfg576csb513asd346adf263逆排,反转第一列和第二列,按第二列去重,反转第一列和第二列
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript