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
转载于:https://blog.51cto.com/whatever957/1852112