提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、cut —— 按列或字符截取
- 1. 常用选项
- 2. 示例
- 二、sort —— 排序(默认按行首字符升序)
- 1. 常用选项
- 常用 `sort` 命令选项
- 三、uniq —— 去除 **连续** 重复行
- 1. 常用选项
- 2. 示例
- 实战:查看登录用户
- 四、tr —— 字符替换 / 删除 / 压缩重复
- 1. 常用选项
- 2. 示例
- 示例:
- 五、常见组合面试题(扩展)
- 1. 统计当前连接的主机数
- 1.1 命令解析
- 2. 统计当前主机的连接状态
- 3. 查看当前登录用户
- 4. 查看登录过系统的用户
- 六、总结口诀
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一、cut —— 按列或字符截取
常用于从文本中抽取需要的字段。
1. 常用选项
-b
:按字节截取-c
:按字符截取(中文推荐用-c
)-d
:指定分隔符(默认 TAB)-f
:指定字段(需配合-d
)
2. 示例
cut -d':' -f1 /etc/passwd # 截取第1列(用户名)
cut -d':' -f3 /etc/passwd # 截取第3列(UID)
cut -d':' -f1,3 /etc/passwd # 截取第1和3列
cut -c 2 name.txt # 截取第2个字符
who
who | cut -b 3 #按字节截取第三个字符
who | cut -c 3 #按字符截取
cat name | cut -b 2
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. 示例
# 创建一个水果类型的文件,一共9行内容实例
cat fruit.txt
apple
apple
peache
pear
banana
cherry
cherry
banana
orangeuniq 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
uniq fruit.txt # 去掉相邻重复行
sort fruit.txt | uniq # 全局去重
sort fruit.txt | uniq -c # 统计每行出现次数
sort fruit.txt | uniq -d # 只显示重复行
sort fruit.txt | uniq -u # 只显示不重复行
实战:查看登录用户
#### 示例一
who | awk '{print $1}'| uniq
#### 示例二:查看登陆过系统的用户
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. 示例
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. 统计当前连接的主机数
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. 统计当前主机的连接状态
ss -nta | grep -v '^State' | cut -d" " -f1 | sort | uniq -c
3. 查看当前登录用户
who | awk '{print $1}' | uniq
4. 查看登录过系统的用户
last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
六、总结口诀
- cut —— 截列
- sort —— 排序
- uniq —— 去重(必须连续,常和 sort 联合)
- tr —— 替换 / 删除 / 压缩