sort命令 sort命令既可以从特定的文件,也可以从stdin中获取输入,并将输出写入stdout。uniq的工作模式和sort一样。 以下两种方法都可以对一组文件进行排序。 sort file1.txt file2.txt ... > sorted.txt sort file1.txt file2.txt ... -o sorted.txt 找出已排序文件中不重复的行 cat sorted_file.txt | uniq > uniq_lines.txt sort -n file.txt # 按数字进行排序 sort -r file.txt # 按逆序进行排序 sort -M months.txt # 按月份进行排序 # 合并两个排序过的文件,并且不需要对合并后的文件在进行排序 sort -m sorted1 sorted2 1. 依据键或列进行排序 cat data.txt mac 2000 winxp 4000 linux 3000 linux 2000 mac 1000 bad 1000 linux 1000 # -k指定了排序按照哪一键来进行 # -r按照逆序来进行排序 # -nr表明按照数字,采用逆序形式排序 sort -nrk 1 data.txt 输出: winxp 4000 mac 2000 mac 1000 linux 3000 linux 2000 linux 1000 bad 1000 # 依据第二列进行排序 sort -k 2 data.txt 3 bad 1000 4 linux 1000 1 mac 2000 2 winxp 4000 sort命令对于字母和数字排序有着不同的处理方式,所以如果要采用数字排序,应该明确给出-n选项。 # 明确指定某一个列范围的字符 sort -nk 2,3 data.txt # -b忽略文件中的前导空白字符 # -d指明以字典序进行排序 sort -bd unsorted.txt uniq命令 uniq命令通过消除重复的内容,从给定的输入中找出单一的行(重复的行只会被打印一次) $ cat sorted.txt bash foss hack hack $ uniq sorted.txt bash foss hack # 或者 sort unsortd.txt | uniq # 或者 sort -u unsorted.txt # 只显示唯一的行(再输入文件中没有出现重复的行) $ uniq -u sorted.txt bash foss # 或者 sort unsorted.txt | uniq -u # 找出文件中重复的行 sort unsorted.txt | uniq -d hack # 统计各行在文件中出现的次数 sort unsorted.txt | uniq -c 1 bash 1 foss 2 hack 我们可以结合-s和-w来指定键: -s 指定可以跳过前N个字符 -w 指定用于比较的最大字符数。 $ cat data.txt u:01:gnu d:04:linux u:01:bash u:01:hack $ sort data.txt | uniq -s 2 -w 2 d:04:linux u:01:bash