sort | uniq -c | sort -rnk 1

本文通过具体的日志文件操作示例,展示了如何使用sort、uniq和自定义排序命令进行数据整理与分析的过程。从原始日志数据的排序、去除重复记录到最终按出现频率排序输出,详细介绍了每一步的操作及效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sort | uniq -c | sort -rnk 1

 

 

[hadoop@master ~]$ cat 001.log 

123

456

1111

456

123

123

1

2

3

4

45

24

66

89

12

1

14

45

3

3

3

3

35

5

5

5

5

5

9

[hadoop@master ~]$ 

[hadoop@master ~]$ 

[hadoop@master ~]$ cat 001.log | sort

1

1

1111

12

123

123

123

14

2

24

3

3

3

3

3

35

4

45

45

456

456

5

5

5

5

5

66

89

9

[hadoop@master ~]$ cat 001.log | sort | uniq -c

      2 1

      1 1111

      1 12

      3 123

      1 14

      1 2

      1 24

      5 3

      1 35

      1 4

      2 45

      2 456

      5 5

      1 66

      1 89

      1 9

[hadoop@master ~]$ cat 001.log | sort | uniq -c | sort -rnk 1

      5 5

      5 3

      3 123

      2 456

      2 45

      2 1

      1 9

      1 89

      1 66

      1 4

      1 35

      1 24

      1 2

      1 14

      1 12

 

      1 1111

### 使用 `sort` 和 `uniq -c` 组合统计与排序的功能 #### 一、功能概述 通过将 `sort` 和 `uniq -c` 命令结合使用,可以实现对文件中重复行的统计。`uniq -c` 命令会在每行前添加该行出现的次数,而 `sort` 命令则可以进一步对这些统计结果进行排序[^2]。 #### 二、命令组合及其功能 以下是 `sort` 和 `uniq -c` 命令组合后再次通过 `sort -nr` 排序并用 `head -1` 取最大值的用法和功能: 1. **去重并统计** `uniq -c` 命令会对连续相同的行进行计数,并在每行前输出计数值。为了确保所有相同行是连续的,通常需要先对文件内容进行排序。 ```bash sort a.txt | uniq -c ``` 2. **按出现次数降序排序** 使用 `sort -nr` 对 `uniq -c` 的输出结果按照出现次数(第一列)进行降序排序。 ```bash sort a.txt | uniq -c | sort -nr ``` 3. **取出现次数最大的行** 使用 `head -1` 提取排序后的第一行,即出现次数最多的行。 ```bash sort a.txt | uniq -c | sort -nr | head -1 ``` #### 三、示例分析 假设文件 `a.txt` 内容如下: ``` apple banana apple orange banana apple ``` 执行以下命令: ```bash sort a.txt | uniq -c | sort -nr | head -1 ``` 1. **`sort a.txt`** 将文件内容按字母顺序排序: ``` apple apple apple banana banana orange ``` 2. **`uniq -c`** 统计每一行的出现次数: ``` 3 apple 2 banana 1 orange ``` 3. **`sort -nr`** 按照出现次数降序排序: ``` 3 apple 2 banana 1 orange ``` 4. **`head -1`** 提取出现次数最多的行: ``` 3 apple ``` 最终输出为 `3 apple`,表示 `apple` 是出现次数最多的行,共出现了 3 次。 #### 四、参数详解 1. **`sort` 命令** - `-n`:按数值排序。 - `-r`:按降序排列。 - `-k`:指定排序字段。 2. **`uniq -c` 命令** - `-c`:在每行前显示该行出现的次数。 3. **`head` 命令** - `-1`:仅显示第一行。 #### 五、代码示例 以下是一个完整的代码示例,展示如何统计文件中出现次数最多的行: ```bash # 统计并输出出现次数最多的行 result=$(sort a.txt | uniq -c | sort -nr | head -1) echo "$result" ``` #### 六、扩展功能 如果需要统计多个出现次数最多的行,可以调整 `head` 的参数。例如,提取出现次数最多的前 3 行: ```bash sort a.txt | uniq -c | sort -nr | head -3 ``` #### 七、注意事项 - 文件内容必须先通过 `sort` 命令排序,否则 `uniq -c` 无法正确统计非连续的重复行[^2]。 - 如果文件中存在大量重复行,建议使用管道符 (`|`) 将命令串联起来,以节省内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值