sort:
选项: -b 忽略每行前面开始出的空格字符 -c 检查文件是否已经按照顺序排序 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符 -f 排序时,将小写字母视为大写字母 -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符 -m 将几个排序好的文件进行合并 -M 将前面3个字母依照月份的缩写进行排序 -n 依照数值的大小排序 -o 将排序后的结果存入指定的文件 -r 倒序 -t 指定排序时所用的分隔符, 默认为[tab](通常和 -k 参数一起使用) -k 指定以第几个字段进行排序 -u uniq, 相同的数据, 仅出现一行 +<起始栏位>-<结束栏位> 以指定的字段来排序,范围由起字段到结束字段的前一个字段 --help 显示帮助信息 示例: sort /etc/passwd sort -t ':' -k 3 /etc/passwd -n sort -t ':' -k 3 /etc/passwd -n -r
uniq:
选项: 不指定选项, 默认重复的行只出现一次 -c 在每列旁边显示该行重复出现的次数 -d 仅显示重复出现的行 -u 仅显示出现过一次的行(唯一的行) -w 指定要比较的字段 示例: last | sort -k '3' | uniq -w 3 -c
sort 和 uniq 使用示例:
示例文件: cat test1.txt 1 2 3 4 5 cat test2.txt 1 3 5 6 7 9 示例1: 求两个文件的交集 # 实现思路: 交集, 即两个文件都存在的列, 使用 sort 排序之后再使用 uniq -d 命令即可实现 sort test1.txt test2.txt | uniq -d 1 3 5 示例2: 求两个文件的并集 # 实现思路: 并集, 即两个文件合并在一起, 去除重复的行, 使用 sort 排序之后再使用 uniq 或者 sort -u sort test1.txt test2.txt | sort -u 或者 sort test1.txt test2.txt | uniq 1 2 3 4 5 6 7 9 示例3: 求两个文件的差集 # 实现思路: 差集(test1-test2), 把 test2 的行重复2次和 test1 的元素放到一起排序, 只输出出现一次的项 # test1 相对 test2 的差集 sort test1.txt test2.txt test2.txt | uniq -u 2 4 # test2 相对 test1 的差集 sort test1.txt test1.txt test2.txt | uniq -u 6 7 9 示例4: 求两个文件的对称差 # 实现思路: 对称差, 即两个文件加起来只出现过一次的行, 使用 sort 排序之后再使用 uniq -u sort test1.txt test2.txt | uniq -u 2 4 6 7 9