提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
-
- [一、cut ------ 按列或字符截取](#一、cut —— 按列或字符截取)
-
- [1. 常用选项](#1. 常用选项)
- [2. 示例](#2. 示例)
- [二、sort ------ 排序(默认按行首字符升序)](#二、sort —— 排序(默认按行首字符升序))
-
- [1. 常用选项](#1. 常用选项)
- [常用 `sort` 命令选项](#常用
sort
命令选项)
- [三、uniq ------ 去除 **连续** 重复行](#三、uniq —— 去除 连续 重复行)
-
- [1. 常用选项](#1. 常用选项)
- [2. 示例](#2. 示例)
- 实战:查看登录用户
- [四、tr ------ 字符替换 / 删除 / 压缩重复](#四、tr —— 字符替换 / 删除 / 压缩重复)
-
- [1. 常用选项](#1. 常用选项)
- [2. 示例](#2. 示例)
- 五、常见组合面试题(扩展)
-
- [1. 统计当前连接的主机数](#1. 统计当前连接的主机数)
-
- [1.1 命令解析](#1.1 命令解析)
- [2. 统计当前主机的连接状态](#2. 统计当前主机的连接状态)
- [3. 查看当前登录用户](#3. 查看当前登录用户)
- [4. 查看登录过系统的用户](#4. 查看登录过系统的用户)
- 六、总结口诀
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一、cut ------ 按列或字符截取
常用于从文本中抽取需要的字段。
1. 常用选项
-b
:按字节截取-c
:按字符截取(中文推荐用-c
)-d
:指定分隔符(默认 TAB)-f
:指定字段(需配合-d
)
2. 示例
bash
cut -d':' -f1 /etc/passwd # 截取第1列(用户名)

bash
cut -d':' -f3 /etc/passwd # 截取第3列(UID)

bash
cut -d':' -f1,3 /etc/passwd # 截取第1和3列

bash
cut -c 2 name.txt # 截取第2个字符

bash
who

bash
who | cut -b 3 #按字节截取第三个字符

bash
who | cut -c 3 #按字符截取

bash
cat name | cut -b 2
bash
cat name | cut -c 2 #中文字符截取

注意:cut只擅长于处理单个字符为间隔的文本
二、sort ------ 排序(默认按行首字符升序)
1. 常用选项
常用 sort
命令选项
选项 | 功能描述 |
---|---|
-t |
指定字段分隔符(默认为空格或制表符) |
-k |
指定排序的关键字段(可指定起止列) |
-n |
按数值大小排序(默认按字典序) |
-r |
降序排列(默认升序) |
-u |
去除重复行(类似 uniq 的功能) |
-o |
将结果输出到指定文件(而非标准输出) |
三、uniq ------ 去除 连续 重复行
注意:只能去掉相邻的重复行 ,所以通常先 sort
再 uniq
。
语法:uniq [选项] 参数
1. 常用选项
-c
:对重复的行进行计数-d
:只显示重复行-u
:只显示唯一行
2. 示例
bash
# 创建一个水果类型的文件,一共9行内容实例
cat fruit.txt
apple
apple
peache
pear
banana
cherry
cherry
banana
orange
uniq fruit.txt # 去掉相邻重复行
sort fruit.txt | uniq # 全局去重
sort fruit.txt | uniq -c # 统计每行出现次数
sort fruit.txt | uniq -d # 只显示重复行
sort fruit.txt | uniq -u # 只显示不重复行
# 或者这样写
cat fruit.txt | sort | uniq -u
# 实战:查看登录用户
# 示例一
who | awk '{print $1}'| uniq
# 示例二:查看登陆过系统的用户
last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
bash
uniq fruit.txt # 去掉相邻重复行

bash
sort fruit.txt | uniq # 全局去重

bash
sort fruit.txt | uniq -c # 统计每行出现次数

bash
sort fruit.txt | uniq -d # 只显示重复行

bash
sort fruit.txt | uniq -u # 只显示不重复行

实战:查看登录用户
bash
#### 示例一
who | awk '{print $1}'| uniq

bash
#### 示例二:查看登陆过系统的用户
last | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' | sort | uniq..." | grep -v wtmp
四、tr ------ 字符替换 / 删除 / 压缩重复
主要用于 单个字符处理,不适合字段级别。
语法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
1. 常用选项
-d
:删除字符-s
:压缩重复字符,只保留一个
2. 示例
bash
tr 'a-z' 'A-Z' < fruit.txt # 小写转大写
# 或
cat fruit.txt | tr 'a-z' 'A-Z'
cat fruit | tr 'apple' 'APPLE' # 替换是一一对应的字母的替换
cat fruit | tr 'a' ' ' # 把替换的字符用单引号引起来,包括特殊字
cat fruit | tr 'apple' 'star' # a替换成s,p替换成a,le替换成r
tr 'a' '/' < fruit.txt # 替换 a -> / 多个字符替换成一个
tr -d 'a' < fruit.txt # 删除所有 a
tr -d '\n' < fruit.txt # 删除换行符
tr -s 'p' < fruit.txt # 连续 p 压缩成一个
示例:
五、常见组合面试题(扩展)
1. 统计当前连接的主机数
bash
ss -nt | tr -s " " | cut -d " " -f5 | cut -d ":" -f1 | sort | uniq -c

1.1 命令解析
ss -nt
:查看 TCP 连接,不解析服务名tr -s " "
:压缩多个空格为一个cut -d " " -f5
:取第5列(对端地址:端口)cut -d ":" -f1
:取 IP 地址部分sort
:排序uniq -c
:统计重复数量
2. 统计当前主机的连接状态
bash
ss -nta | grep -v '^State' | cut -d" " -f1 | sort | uniq -c

3. 查看当前登录用户
bash
who | awk '{print $1}' | uniq

4. 查看登录过系统的用户
bash
last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp

六、总结口诀
- cut ------ 截列
- sort ------ 排序
- uniq ------ 去重(必须连续,常和 sort 联合)
- tr ------ 替换 / 删除 / 压缩