Linux之uniq命令

显示或忽略重复的行。

命令格式

uniq [选项]... [文件]

命令选型

  • -c, —count 在每行开头增加重复次数。
  • -d, —repeated 所有邻近的重复行只被打印一次。
  • -D 所有邻近的重复行将全部打印。
  • —all-repeated[=METHOD] 类似于 -D,但允许每组之间以空行分割。METHOD取值范围{none(默认),prepend,separate}。
  • -f, —skip-fields=N 跳过对前N个列的比较。
  • —group[=METHOD] 显示所有行,允许每组之间以空行分割。METHOD取值范围:{separate(默认),prepend,append,both}。
  • -i, —ignore-case 忽略大小写的差异。
  • -s, —skip-chars=N 跳过对前N个字符的比较。
  • -u, —unique 只打印非邻近的重复行。
  • -z, —zero-terminated 设置行终止符为NUL(空),而不是换行符。
  • -w, —check-chars=N 只对每行前N个字符进行比较。
  • —help 显示帮助信息并退出。
  • —version 显示版本信息并退出。

命令参数

  • INPUT(可选):输入文件,不提供时为标准输入。
  • OUTPUT(可选):输出文件,不提供时为标准输出。

命令返回值

返回0表示成功,返回非0值表示失败。

实验文本

  1. > cat 1.txt
  2. 123
  3. 456
  4. 789
  5. 123
  6. 123
  7. 333
  8. 123
  9. eee
  10. rrr

相邻行去重

  1. > uniq 1.txt
  2. 123
  3. 456
  4. 789
  5. 123
  6. 333
  7. 123
  8. eee
  9. rrr

文件没行排序后,相邻行去重

  1. > sort 1.txt | uniq
  2. 123
  3. 333
  4. 456
  5. 789
  6. eee
  7. rrr
  8. //或者
  9. > sort -u 1.txt
  10. 123
  11. 333
  12. 456
  13. 789
  14. eee
  15. rrr

统计各行在文件中出现的次数

  1. > sort 1.txt | uniq -c
  2. 4 123
  3. 1 333
  4. 1 456
  5. 1 789
  6. 1 eee
  7. 1 rrr

先排序后统计重复的次数

查找文件中重复的行

  1. > sort 1.txt | uniq -d
  2. 123

uniq只检测邻近的行是否重复,sort -u将输入文件先排序然后再处理重复行

忽略每行的前N个字符

  1. > uniq -s 3 1.txt

忽略每行的前3个字符,比较后面的字符

只对前N个字符进行比较

  1. > uniq -w 3 1.txt

只对每行的前3个字符进行比较

返回笔记列表
入门小站