整理以作备忘。
一.工作方式及默认功能
uniq命令操作的是相邻行。
uniq命令只筛选相邻的匹配行并输出或写入文件,不附加任何选项时匹配行将在首次出现处被合并。
如以下文件:
http://www.csdn.net
http://www.csdn.net/blog
http://www.csdn.net/blog/201312
http://www.csdn.net/info
http://www.csdn.net/app
http://www.csdn.net/info
http://www.csdn.net
http://www.csdn.net/app/2131
http://www.youku.com/news/1
http://www.youku.com/news/2
http://www.youku.com/news/3
http://www.youku.com/news
http://www.youku.com/news
http://www.csdn.net
不添加任何选项的情况下,操作结果为:
john@john-IdeaPad:~/c_workspace$ uniq visited_url.db
http://www.csdn.net
http://www.csdn.net/blog
http://www.csdn.net/blog/201312
http://www.csdn.net/info
http://www.csdn.net/app
http://www.csdn.net/info
http://www.csdn.net
http://www.csdn.net/app/2131
http://www.youku.com/news/1
http://www.youku.com/news/2
http://www.youku.com/news/3
http://www.youku.com/news
http://www.csdn.net
可以看到标记为红色的重复行被合并了,而标记为绿色的行未被合并,因为uniq处理的是相邻行。
二.选项功能
1.uniq -c filename
与 uniq --count filename相同,作用是在没行前输出改行的出现次数,相邻的重复行被合并后统计重复次数。
john@john-IdeaPad:~/c_workspace$ uniq -c visited_url.db
1 http://www.csdn.net
1 http://www.csdn.net/blog
1 http://www.csdn.net/blog/201312
1 http://www.csdn.net/info
1 http://www.csdn.net/app
1 http://www.csdn.net/info
1 http://www.csdn.net
1 http://www.csdn.net/app/2131
1 http://www.youku.com/news/1
1 http://www.youku.com/news/2
1 http://www.youku.com/news/3
2 http://www.youku.com/news
1 http://www.csdn.net
2.uniq -d filename
与uniq -repeated filename相同,只输出相邻重复行合并后的结果。
john@john-IdeaPad:~/c_workspace$ uniq -d visited_url.db
http://www.youku.com/news
3.uniq -D filename
与 uniq --all-repeated filename相同,输出相邻重复行,默认不合并。
john@john-IdeaPad:~/c_workspace$ uniq -D visited_url.db
http://www.youku.com/news
http://www.youku.com/news
-f, --skip-fields=N 比较时跳过前N 列
-i, --ignore-case 在比较的时候不区分大小写
-s, --skip-chars=N 比较时跳过前N 个字符
-u, --unique 只显示唯一的行
-z, --zero-terminated 使用'\0'作为行结束符,而不是新换行
-w, --check-chars=N 对每行第N 个字符以后的内容不作对照
--help 显示此帮助信息并退出
--version 显示版本信息并退出
还是那句话,用多了就记住啦