shell不排序去重

转载:http://blog.csdn.net/challenge_c_plusplus/article/details/23053573数组

一条命令搞定:ide


awk '!a[$0]++' filespa



若是是第一次出现a[$0]++的值为0(假),而!a[$0]++的值就为1(真),以后就执行print $0.net

第二次或者两次以上的出现a[$0]++的值就为大于0的整数值(真),例如1,2,3...,而!a[$0]++的值就为0(假),以后就不执行print $0操做orm



awk '!($0 in a){a[$0];print $0}'blog

pattern为!($0 in a),Action为{a[$0];print $0}it


分析:io

1.执行第一行时的a的数组为空,($0 in a)为假,!($0 in a)为真。执行Action,a[$0]就存在了a[row1],打印第一行class

2.执行第二行时的a的数组为a[row1],若是a[row2] 是a[$0]中的元素,!($0 in a)为真为假,不执行Ation。若是a[row2]不是a[$0]中的元素,执行Action,a[$0]中增长元素(a[row1],a[row2]),打印第二行。awk

3.重复执行相似的第二步骤。达到的去重的效果。

相关文章
相关标签/搜索