uniq命令只能用于排过序的数据输入,一些常用选项如下:

$ uniq –u sorted.txt                     #只显示唯一的行(文件中没有出现重复的行)

$ uniq –d sorted.txt                     #找出文件中重复的行

$ uniq –c sorted.txt                     #统计各行在文件中出现的次数

    -s选项用来忽略前多少个字符(须保证忽略字符后的数据仍有序,否则也会按有序的来作处理),-w选项用来指定用于比较的最大字符数,如:

$ uniq –s 2 –w 2 data.txt               #忽略前2个字符,最多比较2个字符

    uniq命令也可以生成包含0值字节终止符的输出,通常与xargs命令一起用,如:

    $ uniq –z file.txt | xargs -0

 

    示例1:统计每个字符在字符串中出现的次数

    输入示例:abebhaaa

    输出示例:4a1b1e2h

    命令示例如下:

$ echo “abebhaaa” | sed ‘s/[^\n]/&\n/g’ | sed ‘/^$/d’ | sort | uniq –c | tr –d ‘\n’

4a1b1e2h

    命令分解:

l  sed:首先将每个字符替换成”字符+\n”,最后一个字符后会多出一个换行符并在最后形成一个空行,因此第二条sed命令用来删除最后的空行

l  sort | uniq –c:排序后计数,统计每个字符各出现了多少次

l  tr:将输入中的空格和换行符删除,生成所要求的输出格式


From:http://blog.sina.com.cn/s/blog_93b1f3f0010157fz.html