cut、sort及uniq工具简介

本文详细探讨了Unix操作系统的核心特性及其在现代编程环境中的应用,同时介绍了多种Unix下使用的高效编程工具和环境配置技巧,旨在帮助开发者提高生产力和代码质量。

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

一、cut工具

1.cut工具在文件中负责剪切数据,以行为一个对象进行处理,在这个点上与工具sed是一样处理机制的。

2.cut用法 ,cut命令主要接受三个定为方法:

(1)按照字节进行剪切,使用选项-b(如下例子)


(2)按照字符进行剪切,使用选项-c(如下例子)

(3)按照域进行剪切,使用选项-f(如下例子,-d用来指定域)

二、sort工具

1.sort如cut一般,也是以行为单位,从首字符向后,一次按照ASCII码值进行比较,最后按照升序输出。




2.sort命令加选项使用:

(1)-u :去掉文件中重复行

(2)-r:将文件默认升序输出的顺序改为降序

(3)-o:由于sort默认把结果输出到标准输出,所以需要重定向才能将结果写入文件,但是sort处理后的数据已经是排序后的数据,所以再使用宠定向就不行了,那么这个选项就可以实现

(4)-n:实现数字比较不按照默认的字符来排序

(5)-t:这个选项之后可以设置间隔符

(6)-k:指定一个文件的列数

(7)-f:将小写字母都转换为大写字母进行比较(及忽略大小写)

(8)-c:检查文件是否已经排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

(9)-C:检查文件是否已经排好序,如果乱序,则不输出内容,仅返回1

(10)-b:忽略每一行前面的所有空白部分,从第一个可见字符开始比较

三、uniq工具

1.uniq读取输入文件,并比较相邻的行,在正常的情况下,第二个以及后面的重复行将会被删去,行比较是根据字符集的排序序列进行排序的,最后默认将处理过的数据写入到输出文件中。当然这里的输出文件和输入文件必须不同。

2.命令使用

(1)-c:显示输出文件中,在每行行首加上本行在文件中出现的次数

(2)-u:只显示文件中不重复的行

(3)-d:只显示重复行

### 使用 `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、付费专栏及课程。

余额充值