uniq

本文深入探讨了CookieLog处理中的uniq、sort命令如何协作去除非相邻重复行,解释了-c、-d、-u、-i、-f、-s、-w参数的作用,提供了一个实例来展示如何高效分析访问频率并识别唯一行。

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

分析 Cookie Log 的需要,经常要用到 uniq 来去除重复行,一直都觉得挺好使的。偶然间发现,对于非相邻的重复行,并不能去除!需要配合 sort 使用。man 了下,发现赫然写着:“Filter adjacent matching lines……”。感情还是对其了解不够阿。

看了下其参数,有些还是比较有用的:

-c --count 显示重复的次数,这个一直在用,对于分析访问频率非常好用

-d --repeated 只显示重复行

-u --unique     只显示唯一行

-i  --ignore-case

-f  --skip-fields=N 不比较前 N 个字段

-s --skip-chars=N 不比较前 N 个字符

-w --check-chars=N 只比较前 N 个字符

### 使用 `sort` 和 `uniq` 命令 #### 一、`sort` 命令详解 `sort` 是 Linux/Unix 中用于对文本文件的内容进行排序的强大工具。默认情况下,它会基于 ASCII 编码顺序对每一行数据进行排序[^1]。 以下是常用的参数及其功能: - `-b`: 忽略前导空白字符(如空格和制表符)。 - `-c`: 检查输入是否已排序;如果未排序,则返回错误消息并退出。 - `-d`: 只比较字母数字字符和空格字符,忽略其他字符。 - `-f`: 将所有的小写字母视为大写字母进行比较。 - `-n`: 按照数值大小而非字符串字典顺序进行排序。 - `-r`: 以相反的顺序排列输出结果。 - `-u`: 抑制重复行的显示,仅保留唯一的一份副本。 - `-k POS1[,POS2]`: 定义要排序的关键字段范围。 - `-t CHAR`: 设置字段分隔符为指定字符。 示例代码如下所示: ```bash # 对文件 data.txt 进行升序排序,并保存到 sorted_data.txt 文件中 sort -o sorted_data.txt data.txt # 数值降序排序 sort -nr file_with_numbers.txt ``` #### 二、`uniq` 命令概述 `uniq` 命令主要用于过滤相邻的重复行。需要注意的是,该命令只会移除连续相同的记录,因此通常需要先通过 `sort` 来预处理数据以便获得全局去重的效果[^2]。 主要选项有以下几个方面: - `-c | --count`: 统计每条不重复项的数量,在其左侧打印出现次数; - `-d | --repeated`: 仅仅展示那些存在多次实例的数据行; - `-i | --ignore-case`: 不区分大小写的匹配模式; - `-u | --unique`: 输出只发生过一次的独特项目列表。 实际操作例子: ```bash # 查找 log_file.log 中唯一的 IP 地址 cat log_file.log | cut -d ' ' -f 1 | sort | uniq # 显示访问日志里各 ip 的请求频次 awk '{print $1}' access_log | sort | uniq -c | sort -nr ``` #### 三、两者联合运用场景分析 当面对大量无规律的日志或者杂乱的信息集合时,单独依靠任何一个都不能达到理想效果。此时可以将这两个指令结合起来使用: 1. **去除完全相同的所有记录** 首先利用 `sort` 实现初步整理工作,接着再交给 `uniq` 处理掉多余的拷贝版本。 2. **统计频率最高的关键词组** 结合管道机制串联多个进程调用,最终得到我们关心的结果集。 综合应用案例演示: ```bash # 计算某个文档中最常使用的单词 tr -cs "A-Za-z0-9" "\n" < input_text | tr "[:upper:]" "[:lower:]" | grep -v "^$" | sort | uniq -c | sort -rn | head -n 10 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值