uniq 命令

163 阅读2分钟

uniq 命令是 Linux 和 Unix 系统中的一个工具,用于报告或忽略文件中的重复行。通常,uniq 命令与 sort 命令一起使用,因为 uniq 只能识别相邻的重复行。以下是 uniq 命令的详细介绍,包括常用选项和示例。

基本用法

uniq [选项] [输入文件] [输出文件]

常用选项

  • -c
    在每行前面加上出现的次数。
    示例:uniq -c file.txt

  • -d
    仅显示重复的行。
    示例:uniq -d file.txt

  • -u
    仅显示不重复的行。
    示例:uniq -u file.txt

  • -i
    忽略大小写。
    示例:uniq -i file.txt

  • -f
    忽略每行前 N 个字段。
    示例:uniq -f 2 file.txt 忽略每行前两个字段。

  • -s
    忽略每行前 N 个字符。
    示例:uniq -s 3 file.txt 忽略每行前三个字符。

  • -w
    只比较每行的前 N 个字符。
    示例:uniq -w 5 file.txt 只比较每行的前五个字符。

  • --help
    显示帮助信息并退出。

示例

  1. 删除重复行

    uniq file.txt
    
  2. 统计每行出现的次数

    uniq -c file.txt
    
  3. 仅显示重复的行

    uniq -d file.txt
    
  4. 仅显示不重复的行

    uniq -u file.txt
    
  5. 忽略大小写

    uniq -i file.txt
    
  6. 忽略每行前两个字段

    uniq -f 2 file.txt
    
  7. 忽略每行前三个字符

    uniq -s 3 file.txt
    
  8. 只比较每行的前五个字符

    uniq -w 5 file.txt
    
  9. 将结果输出到另一个文件

    uniq file.txt output.txt
    

sort 命令结合使用

由于 uniq 只能识别相邻的重复行,通常需要先对文件进行排序:

sort file.txt | uniq

高级用法

  • 统计重复行的数量并排序

    sort file.txt | uniq -c | sort -nr
    

    这将统计每行出现的次数,并按次数降序排序。

  • 结合 awk 进行复杂处理

    sort file.txt | uniq -c | awk '$1 > 1'
    

    这将只显示出现次数大于 1 的行。

实际应用场景

  • 统计日志文件中的独特 IP 地址

    sort access.log | uniq
    
  • 查找重复的配置项

    sort config.txt | uniq -d
    
  • 过滤重复的用户输入

    sort user_input.txt | uniq
    

通过这些选项和示例,你可以灵活地使用 uniq 命令来处理各种重复行的需求。如果你有特定的需求或遇到问题,欢迎继续提问。