一、常用用法
1 | uniq [-c] [-d | -u] [-i] [-f N] [-s N] INPUT |
二、含义与选项
2.1、含义
对“相邻行”进行“唯一性”运算,也即对“相邻行”进行互相比较操作。
2.2、选项
“-c”:打印行出现次数。
“-d”:只打印出现次数大于1的行。
“-u”:只打印出现次数等于1的行。
“-i”:“相邻行”比较时,忽略大小写差异。
“-f N”:“相邻行”比较时,跳过前N个字段的比较,字段之间由“空格+TAB”组成的字符串隔开。
“-s N”:“相邻行”比较时,跳过前N个字符的比较。
三、实验
现在有一个文件“a.txt”,内容如下:
1 | a |
3.1、实验1
1 | uniq a.txt |
执行以上命令,得到如下所示结果:
1 | a |
表明默认情况下,会打印所有行,但是重复行只打印1次。
3.2、实验2
1 | uniq -c a.txt |
执行以上命令,得到如下所示结果:
1 | 1 a |
增加“-c”选项,额外打印了行出现次数。
3.3、实验3
1 | uniq -c -u a.txt |
执行以上命令,得到如下所示结果:
1 | 1 a |
增加“-u”选项,只打印出现次数等于1的行。
3.4、实验4
1 | uniq -c -d a.txt |
执行以上命令,得到如下所示结果:
1 | 2 b |
增加“-d”选项,只打印出现次数大于1的行。
3.5、实验5
1 | uniq -c -d -i a.txt |
执行以上命令,得到如下所示结果:
1 | 2 b |
增加“-i”选项,比较时忽略大小写差异。
3.6、实验6
1 | uniq -c -d -f 1 a.txt |
执行以上命令,得到如下所示结果:
1 | 8 a |
增加“-f 1”选项,跳过第1个字段的比较。
3.7、实验7
1 | uniq -c -d -s 3 a.txt |
执行以上命令,得到如下所示结果:
1 | 8 a |
增加“-s 3”选项,跳过前3个字符的比较。
四、其他
由于涉及到两个字符串的比较等,故而程序实现中使用到“LC_COLLATE”等环境变量,最终结果受到“LC_COLLATE”等环境变量的控制。
参考文献: [1]man uniq