云计算学习笔记(个人自用)--1
文章目录
Typora 块元素
换行符
空行
标题
# 一级标题
## 二级标题
### 这是三级标题
#### 这是四级标题
##### 这是五级标题
###### 这是六级标题
引用文字
1234567
>1234567
仅供练习参考,不做生成环境指导。
> 仅供练习参考,不做生成环境指导。
>
> [文章来源](www.baidu.com)
列表
无序列表
-
红
-
黄
-、+或* 红 -、+或* 黄
有序列表
-
红
-
黄
1. 红 2. 黄
任务列表
任务列表是标记为[ ]或[x](未完成或完成)的项目的列表。
- [ ] 这是一个任务列表项
- [ ] 需要在前面使用列表的语法
- [ ] normal **formatting**, @mentions, #1234 refs
- [ ] 未完成
- [x] 完成
- 这是一个任务列表项
- 需要在前面使用列表的语法
- normal formatting, @mentions, #1234 refs
- 未完成
- 完成
代码块
```
语法高亮
```ruby
Linux
Linux桌面环境安装
# 查看图形化软件包组名称
[root@centos7 ~ 11:10:10]# yum grouplist -v|grep gnome
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
GNOME 桌面 (gnome-desktop-environment)
# 安装图形化
[root@centos7 ~ 11:10:10]# yum groupinstall -y gnome-desktop-environment
# 安装完成后关机
[root@centos7 ~ 11:10:10]# init 0
# 修改CPU为2,内存为4G
# 启动图形化界面
[root@centos7 ~ 11:25:08]# init 5
# 设置系统默认使用图形化界面启动
[root@centos7 ~ 11:25:45]# systemctl set-default graphical.target
# 重启验证
[root@centos7 ~ 11:27:01]# reboot
# 关机打快照,快照名称 '图形化'
[root@centos7 ~ 11:10:10]# init 0
# 命令示例
[root@centos7 ~ 11:38:09]# ls -l /etc/fstab
-rw-r--r--. 1 root root 465 8月 1 15:45 /etc/fstab
ls 是命令,要做什么事情,list 查看清单
-l 是选项,如何做。如果省略,则每个命令使用自己的默认值。
/etc/fstab 是参数,对谁做。如果省略,则每个命令使用自己的默认参数。
# 动态(实时更新)查看文件内容
[root@centos7 ~ 11:40:16]# tail -f /var/log/secure
tail是命令,尾巴,查看文件末尾几行
-f是选项,代表动态跟踪。
/var/log/secure 查看目标。
免交互设置密码
[root@centos7 ~ 14:00:46]# echo redhat | passwd --stdin laoma
更改用户 laoma 的密码 。
passwd:所有的身份验证令牌已经成功更新。
linux命令行((3.Linux命令行)
命令提示符
# 代表普通用户提示符,提示符最后是有一个空格。
[laoma@CentOS7 ~]$
# 代表管理员提示符
[root@CentOS7 ~]#
shell解析字符串的语法
通过空格分隔,包涵三个部分:
- 命令,第一部分必须是命令,代表要执行的程序,其后可能跟着选项或参数。
- 选项,调整命令的行为或作用。通常以一个或两个
-符号开头,例如(-a --all)。 - 参数,典型的参数是命令的目标,命令后面可能接多个参数。
ls
ls 是一个在 Unix、Linux 和 macOS 等类 Unix 操作系统中常用的命令,用于列出当前目录下的文件和子目录。
命令行语法
date
date 是一个用于显示或设置系统日期和时间的命令,在类 Unix 系统(如 Linux、macOS 等)中常用
date +"%Y-%m-%d":以年-月-日格式显示日期(如2025-09-14)date +"%H:%M:%S":以时:分:秒格式显示时间(如10:30:45)date -s "2025-09-14 10:30:00":设置系统时间(通常需要 root 权限)
bash执行命令
passwd
passwd 是类 Unix 系统(如 Linux、macOS 等)中用于修改用户密码的命令
file
file 是类 Unix 系统中用于识别文件类型的命令,它通过分析文件的内容(而非文件名)来判断文件的实际类型。
file -b 文件名:仅显示文件类型,不包含文件名(简洁输出)file -i 文件名:以 MIME 类型格式显示(如text/plain; charset=us-ascii)file -r 文件名:不对文件名中的特殊字符(如换行符)进行转义处理file *:显示当前目录下所有文件的类型
cat
显示行号
[laoma@centos7 ~ 15:00:34]$ cat -n /etc/profile | tail -n +11 | head -n 5
11 pathmunge () {
12 case ":${PATH}:" in
13 *:"$1":*)
14 ;;
15 *)
cat 命令配合标准输入和标准输出能够实现复杂的指令。
[root@centos7 ~ 15:15:49]# cat
# 输入hello,然后回车
hello
# 自动显示hello
hello
按ctrl+d 退出输出。
*****
(创建文件并加入内容)
[root@centos7 ~ 15:16:14]# cat > hello.txt
hello world
ni hao
# 按ctrl+d 退出输出。
*****
[root@centos7 ~ 15:17:13]# cat hello.txt
hello world
ni hao
*****
使用 << 自定义数据结束符号
[root@centos7 ~ 15:17:17]# cat <<EOF > test.txt
> line 1
> line 2
> line 3
> EOF
[root@centos7 ~ 15:21:37]# cat test.txt
line 1
line 2
line 3
head
查看 /etc/profile 11-15行内容
[laoma@centos7 ~ 14:55:19]$ head -n 15 /etc/profile | tail -n 5
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
tail
能否tail在前head在后?
[laoma@centos7 ~ 14:59:55]$ tail -n +11 /etc/profile | head -n 5
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
less
less 是类 Unix 系统中一个功能强大的文件查看工具,用于逐页查看文本文件内容,比 more 命令更灵活。
常用操作(在查看模式中):
-
空格键:向下翻一页
-
b键:向上翻一页 -
回车键:向下滚动一行
-
k键:向上滚动一行 -
G:跳转到文件末尾 -
g:跳转到文件开头 -
/关键词:向下搜索 “关键词”(按n键继续查找下一个,N键查找上一个) -
?关键词:向上搜索 “关键词” -
q键:退出less查看模式 -
h键:显示帮助信息
用法:
less -N 文件名:显示行号less +/关键词 文件名:打开文件后直接定位到第一个 “关键词” 处less -S 文件名:不自动换行(长行会被截断,按左右箭头可滚动查看)
wc
类 Unix 系统中用于统计文件内容的命令,主要用于计算文件的行数、单词数和字节数。
用法:
wc -l 文件名:仅统计行数(line count)
例如:wc -l log.txt统计日志文件的行数wc -w 文件名:仅统计单词数(word count),以空格或换行分隔的字符串视为单词wc -c 文件名:仅统计字节数(byte count),包括所有字符(含换行符、空格等)wc -m 文件名:统计字符数(character count),多字节字符(如中文)会按实际字符数计算wc -L 文件名:显示文件中最长行的长度(包含换行符)
tab按键–自动补全
history (记录查询)
history N:显示最近的 N 条命令历史(如history 10显示最近 10 条命令)!n:执行历史记录中编号为 n 的命令(如!100会执行编号 101 的命令)!!:重复执行上一条命令(等同于!-1)!string:执行最近一条以 “string” 开头的命令(如!ls会执行最近一条以 ls 开头的命令)history -c:清空当前的命令历史记录(仅清除内存中的记录,不影响已保存的)history -d n:删除编号为 n 的历史记录
scripts(脚本)
在 Linux/Unix 环境中,“scripts” 通常指的是 shell 脚本(以 .sh 为扩展名),是一系列命令的集合,用于自动化执行重复任务。
echo
# 查看文件内容 /etc/fstab
echo 查看文件内容 /etc/fstab
echo /etc/fstab 文件内容 如下
cat /etc/fstab
[root@centos7 ~ 16:03:16]# cat <<EOF >12.sh
#!/bin/bash
# 查看文件系统内容
echo 文件系统内容如下:
df -h
echo
# 查看内存和cpu使用信息
echo 内存和cpu使用情况如下:
vmstat 1 5
EOF
[root@centos7 ~ 16:03:29]# bash 12.sh
bash 快捷键
| 快捷键 | 作用 |
|---|---|
| Ctrl+a 或者 Home | 光标定位到命令行开头 |
| Ctrl+e 或者 End | 光标定位到命令行末尾 |
| Ctrl+u | 删除光标位置到命令行开头 |
| Ctrl+k | 删除光标位置到命令行末尾 |
| Ctrl+<- | 光标向左跳转一个单词 |
| Ctrl±> | 光标向右跳转一个单词 |
| Ctrl+r | 搜索历史命令 |
| Ctrl+w | 向左删除一个单词 |
| Esc+. | 打印上一个命令的最后一个参数 |
| Ctrl+l(L的小写) | 清空屏幕 |
| Ctrl+d | 登出终端 |
命令行管理文件(4.命令行管理文件)
文件系统层次结构

FHS
如果每个人都按自己的喜好,在/目录下创建目录、存放文件,将导致其他人无法快速使用他人的linux系统。为避免这样的情况,FHS就应运而生,对linux文件系统目录结构进行规范化。
| 位置 | 用途 |
|---|---|
| /usr | 系统安装的软件、共享的库。重要的子目录有:/usr/bin: 用户命令。/usr/sbin: 系统管理命令。 /usr/lib /usr/lib64:应用程序可调用的通用库文件。 /usr/local: 本地自定义软件。 |
| /etc | 系统配置文件。 |
| /var | 系统可变数据,在系统启动之间保持永久性,如数据库、 缓存目录、日志文件、打印机后台处理文档和网站内容。 |
| /run | 自本次系统启动以来运行中的进程的运行数据,包括进程ID文件和锁定文件,等等。此目录中的内容在重启时重新创建。此目录合并了早期版本的Linux 中的/var/run和/var/lock。 |
| /home | 主目录是普通用户存储其个人数据和配置文件的位置。 每个用户有自己的位置,例如 /home/laoma。 |
| /root | 管理员root的主目录。 |
| /tmp | 供临时文件使用的全局可写空间。 10天内未访问、未更改或未修改的文件将自动从该目录中删除。 还有一个临时目录/var/tmp,该目录中的文件如果在30天内未曾访问、更改或修改过, 将被自动删除。 |
| /boot | 开机启动过程所需的文件。 |
| /dev | 包含特殊的设备文件,供系统用于访问硬件。 |
文件路径导航
绝对路径 相对路径
当前位置:/tmp/vmware-root_1619-1816005584
目标位置:/tmp/yum.log
当前位置:/usr/share/doc/
目标位置:/usr/yum.log
相对路径:../../yum.log
当前位置:/usr/share/doc/
目标位置:/etc/yum/yum.log
相对路径:../../../etc/yum/yum.log
ls 命令补充
#-R 选项递归查看子目录中文件
[laoma@centos7 ~]$ ls /etc/yum
fssnap.d pluginconf.d protected.d vars version-groups.conf
[laoma@centos7 ~]$ ls -R /etc/yum
/etc/yum:
fssnap.d pluginconf.d protected.d vars version-groups.conf
/etc/yum/fssnap.d:
/etc/yum/pluginconf.d:
fastestmirror.conf langpacks.conf
/etc/yum/protected.d:
systemd.conf
/etc/yum/vars:
contentdir infra
-
ls命令默认按文件名先后顺序正向排序
-
使用 -r 选项反向排序
-
使用 -t 选项按时间排序
-
使用 -d 选项只查看对象本身
stat (查看文件的元数据属性)
元数据:元数据(Metadata)是描述数据的数据(Data about Data),它不直接记录核心信息本身,而是通过结构化的信息,定义核心数据的属性、背景、关联关系和使用规则,帮助人们或系统快速理解、管理、定位和使用核心数据。
简单来说,如果你把核心数据比作 “一本书”,元数据就是这本书的 “封面、目录、作者、出版日期、字数、分类标签”—— 它不包含书中的故事内容,但能让你快速知道 “这是本什么书”“怎么找到它”“适不适合自己”。
touch(创建文件,修改时间戳)
创建文件:
touch notes.txt:创建一个名为notes.txt的空文件touch report.md data.csv:同时创建多个空文件
修改时间戳
touch -a 文件名:仅更新文件的访问时间(不改变修改时间)touch -m 文件名:仅更新文件的修改时间(不改变访问时间)touch -t 时间 文件名:将文件时间设置为指定时间,格式为YYYYMMDDhhmm.ss
例如:touch -t 202509141530.00 oldfile.txt将文件时间设为 2025 年 9 月 14 日 15:30:00touch -r 参考文件 目标文件:将目标文件的时间设置为与参考文件相同
命令行管理文件
mkdir
cp(copy)
文件
- 当前目录下有同名称文件,不会提示直接覆盖(通过 -i 选项,提示是否覆盖)
- 复制多个文件,目标只能是目录
目录
- 使用 -r 选项复制目录
- 当前目录下有同名称目录,则将源目录放到相同目录下面,而不是覆盖当前目录
- 复制多个目录,目标必须是已经存在的目录
- 以上信息提示权限不够,暂不用理会
mv (move)
# 重命名文件
[laoma@centos7 lab]$ ls
etc home host.conf yum yum-1
[laoma@centos7 lab]$ mv host.conf host.conf-new
[laoma@centos7 lab]$ ls
etc home host.conf-new yum yum-1
rmdir
- 使用-f选项,直接删除
- -r选项递归删除目录
- 递归强制删除目录 -fr选项
软连接(ln(link))

shell 扩展匹配文件
| 模式 | 匹配项 |
|---|---|
| * | 由零个或更多字符组成的任何字符串。单独*不匹配隐藏文件。 |
| ? | 任何一个字符。 |
| [abc…] | 位于两个方括号之间中的任何一个字符。 |
| [^abc…]或[!abc…] | 不在括起的类中的任何一个字符。 |
| ~ | 当前用户的主目录。 |
| ~username | username用户的主目录。 |
| [[:alpha:]] | 任何字母字符,相当于[a-Z]。 |
| [[:lower:]] | 任何小写字符。 |
| [[:upper:]] | 任何大写字符。 |
| [[:alnum:]] | 任何字母字符或数字,相当于[a-Z0-9]。 |
| [[:punct:]] | 除空格和字母数字以外的任何可打印字符。 |
| [[:digit:]]或[0-9] | 从 0 到 9 的任何单个数字。 |
| [[:space:]] | 任何一个空白字符。这可能包括制表符、 换行符、回车符、 换页符或空格。 |
* 示例
匹配由零个或更多字符组成的任何字符串。单独*不匹配隐藏文件。
? 示例
匹配任何一个字符。
[] 示例
匹配位于两个方括号之间中的任何一个字符。
~ 示例
匹配用户家目录。
{} 示例
Linux 中获取帮助
Man手册(manual)
| SECTION | 内容类型 |
|---|---|
| 1 | 用户命令(可执行命令和shell程序) |
| 2 | 系统调用(从用户空间调用的内核例程) |
| 3 | 库函数(由程序库提供) |
| 4 | 特殊文件(如设备文件) |
| 5 | 文件格式(用于许多配置文件和结构) |
| 6 | 游戏(过去的有趣程序章节) |
| 7 | 惯例、标准和其他(协议、文件系统) |
| 8 | 系统管理和特权命令(维护任务) |
| 9 | Linux内核API(内核调用) |
man手册页面交互操作指令(less程序)
| 命令 | 结果 |
|---|---|
| PageDown或者空格键 | 向前(向下)滚动一个屏幕 |
| PageUp | 向后(向上)滚动一个屏幕 |
| 向下箭头 | 向前(向下)滚动一行 |
| 向上箭头 | 向后(向上)滚动一行 |
| d | 向前(向下)滚动半个屏幕 |
| u | 向后(向上)滚动半个屏幕 |
| /string | 在man page中向前(向下)搜索string |
| n | 在man page中重复之前的向前(向下)搜索 |
| N | 在man page中重复之前的向后(向上)搜索 |
| g | 转到man page的第一行。 |
| G | 转到man page的最后一行。 |
| q | 退出man ,并返回到shell命令提示符 |
grep
先用man -k 在man中查询 再用grep筛选关键字
history(不建议man)
[laoma@centos7 ~]$ help history
which 和 whereis 命令
which查看命令代表什么
whereis 查看关键字对应的程序位置,帮助文档,源码
vim 编辑器
介绍
文本编辑器(不独属于linux系统)
- conmand 模式
- edit 模式 按i进入
- extended command 按:进入
- visual edit 模式 按v进入
命令行模式快捷键
定位文件内容:
w,向后1个word(光标在单词开头);e,向后1个word(光标在单词末尾)b,向前1个word^或0,行首$,行尾(,上一个句子头部;),下一个句子尾部。{,上一个自然段;},下一个自然段。gg,第一行;G,最后一行
进入插入模式:
- i ,当前位置插入。
- I,行首插入。
- a,当前位置追加。
- A,行末追加。
- o,向下新开一个空白行。
- O,向上新开一个空白行。
复制:yy,复制1行,相当于y1y。以此类推 y2y y2w y2b。
粘贴:p 当前位置后粘贴,P 当前位置前粘贴
删除:
- x,删除当前单个字符。5x,删除当前字符和后续4个字符。
- X,删除前一单个字符。
- dw,删除1个word,以此类推 d5w d3b d2d d$。
- D,从当前删除到最后,相当于d$。
回退:
- u,撤销上一个操作。
- U,撤销整行修改。
修改,相当于删除后插入:
- s,删除当前字符,并进入编辑模式。
- S,删除当前行,并进入编辑模式。
- c,代表替换动作,例如cw,删除1个word,并进入编辑模式。以此类推 c5w。
- C,从当前删除到最后,并进入编辑模式。
替换:
-
r,替换单个字符后回退到命令行模式。
-
R,替换模式,一直替换直到按
Ese返回命令行模式。综合案例
# 安装 dhcp 软件 [root@centos7 ~ 13:39:01]# yum install -y dhcp [root@centos7 ~ 13:40:03]# # 安装一个软件,系统中会生成执行程序和配置文件。 # 查看配置文件内容 [root@centos7 ~ 13:34:26]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # #根据提示复制模板 [root@centos7 ~ 14:04:39]# /bin/cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf [root@centos7 ~ 13:37:31]# # 每个工具或者服务都有配置文件。 [root@centos7 ~ 13:38:42]# # vim /etc/vimrc ~/.vimrc # 修改vim工具配置,设置显示行号和命令 [root@centos7 ~ 13:36:30]# vim ~/.vimrc set number showcmd # 开始修改 dhcpd.conf [root@centos7 ~ 13:34:26]# vim /etc/dhcp/dhcpd.conf 1. gg 光标移动到第一行 2. d45d 从当前行开始删除45行 3. :11,$d,回车执行 从11行删除到最后一行 4. :%s/10.5.5/10.1.8/g,回车执行 在文件中查找10.5.5,并将查找到的内容替换为10.1.8 % 代表针对文件所有行 s 查找并替换 /10.5.5/查找内容 /10.1.8/ 替换内容 g将行中所有匹配内容替换掉 5. /224,回车执行 搜索224 6. cw change 1 word(删除1个单词并进入插入模式),写0 7. esc 返回命令行模式 8. ZZ 保存退出
Linux 输入输出重定向
Linux 输入输出重定向介绍

-
stdout是进程输出正常结果的通道
-
stderr是进程输出错误信息的通道,用于区分正常输出和错误提示(如程序崩溃、逻辑错误的提示信息)
- other files(其他文件,filename)代表进程与自定义文件的交互通道(非标准流),没有默认连接,需要手动指定文件。用法为读取和 / 或写入(可根据需求对文件进行读、写操作)。
标准输出重定向到文件

管道符|与>、>>等符号按从左往右的顺序执行
!标准输出重定向到程序

实操题:生产环境日志分析与问题排查综合脚本
-
查看工具帮助:
- 使用
man命令查看grep和awk的手册,了解如何筛选包含特定状态码的行、提取日志中的 IP 和 URL。 - 使用
--help选项查看sort和uniq的用法,了解如何排序和去重统计。
- 使用
-
日志分析操作:
- 从
access.log中筛选出所有 4xx(客户端错误)和 5xx(服务器错误)的日志行,导出到/tmp/error_logs.txt。 - 从错误日志中提取访问 IP,统计每个 IP 的错误访问次数,按次数降序排列,取前 5 名,结果保存到
/tmp/top5_error_ips.txt。 - 从错误日志中提取 URL(假设日志格式中 URL 为第 7 列)和状态码,统计每个(URL + 状态码)组合的出现次数,结果保存到
/tmp/url_error_stats.txt。
- 从
-
生成分析报告:
- 将上述分析结果汇总到
/tmp/nginx_analysis_report.txt,包含操作时间、错误日志总数、Top5 错误 IP、URL 错误统计。
- 将上述分析结果汇总到

知识点
awk(查询某一列数据)
awk 是一种强大的文本处理工具,常用于在类 Unix 系统中对文本数据进行分析、提取和转换,特别适合处理结构化的文本(如日志、CSV 等)。
awk '模式 { 动作 }' 文件名
- 模式:指定需要处理的行(如条件判断)
- 动作:对匹配的行执行的操作(如打印、计算等)
| 功能分类 | 命令示例 | 说明 | |
|---|---|---|---|
| 基本打印 | awk '{print}' file.txt | 打印整个文件所有内容(等同于 cat) | |
awk '{print $0}' file.txt | 打印整行内容($0 代表整行) | ||
| 按列提取 | awk '{print $1, $3}' data.txt | 打印第 1 列和第 3 列(默认空格 / 制表符分隔) | |
awk -F ',' '{print $2}' csv.txt | 用 -F 指定逗号为分隔符,打印第 2 列 | ||
awk '{print $NF}' file.txt | 打印每行的最后一列(NF 表示当前行列数) | ||
| 条件过滤 | awk '$3 > 100 {print}' data.txt | 第 3 列数值大于 100 的行才打印 | |
awk '/error/ {print}' log.txt | 打印包含 “error” 的行(支持正则表达式) | ||
awk 'NR > 5 {print}' file.txt | 打印行号大于 5 的内容(NR 表示当前行号) | ||
| 统计计算 | awk '{sum += $2} END {print sum}' nums.txt | 计算第 2 列的总和(END 块在处理完所有行后执行) | |
awk 'END {print NR}' file.txt | 统计文件的总行数 | ||
awk '{avg = $2/$3; print avg}' data.txt | 计算第 2 列与第 3 列的比值并打印 | ||
| 格式化输出 | awk '{printf "Name: %-10s Age: %d\n", $1, $2}' info.txt | 格式化输出(左对齐姓名,占 10 字符宽度) | |
| 处理多个文件 | awk '{print FILENAME ": " $0}' a.txt b.txt | 打印内容时包含文件名(FILENAME 为当前文件名) | |
| 结合管道使用 | `ls -l | awk ‘$5 > 1024 {print $9}’` | 过滤出文件大小(第 5 列)大于 1024 字节的文件名(第 9 列) |
sort
sort 是类 Unix 系统中用于对文本内容进行排序的命令,可按字母、数字、月份等多种方式排序,并支持对文件或管道输入进行处理。
| 功能分类 | 命令示例 | 说明 | |
|---|---|---|---|
| 基本排序 | sort file.txt | 对文件内容按默认规则(字母顺序)排序,输出到屏幕 | |
sort -o sorted.txt file.txt | 将排序结果保存到 sorted.txt(-o 指定输出文件) | ||
| 数字排序 | sort -n numbers.txt | 按数值大小排序(默认按字符编码排序,-n 启用数字排序) | |
sort -nr numbers.txt | 按数值逆序排序(-r 表示反向排序) | ||
| 按列排序 | sort -k3 data.txt | 按第 3 列内容排序(-k 指定列数,默认空格分隔) | |
sort -t',' -k2n data.csv | 用逗号分隔(-t 指定分隔符),按第 2 列数值排序 | ||
| 去重排序 | sort -u words.txt | 排序并去除重复行(等同于 `sort words.txt | uniq`) |
sort -k1,1 -u data.txt | 按第 1 列去重(只保留第 1 列首次出现的行) | ||
| 特殊排序 | sort -M dates.txt | 按月份排序(如 Jan、Feb…) | |
sort -f names.txt | 忽略大小写排序(-f 表示不区分大小写) | ||
| 组合使用 | ls -l sort -k5nr | 对 ls -l 输出按文件大小(第 5 列)逆序排序 | |
sort -t' ' -k2,2 -k3n data.txt | 先按第 2 列排序,再按第 3 列数值排序(多列排序) |
uniq
其核心作用是识别并移除(或标记)连续的重复行
| 功能分类 | 命令示例 | 说明 | |
|---|---|---|---|
| 基本去重 | uniq file.txt | 移除相邻的重复行(只保留首次出现的行) | |
| `sort file.txt | uniq` | 先排序使重复行相邻,再去重(彻底去除所有重复行) | |
| 显示重复行 | uniq -d file.txt | 只显示出现过多次的相邻重复行(仅显示一次) | |
| `sort file.txt | uniq -d` | 显示所有重复出现过的行(需先排序) | |
| 统计重复次数 | uniq -c file.txt | 显示每行内容及其出现的次数(相邻重复行计数) | |
| `sort file.txt | uniq -c` | 统计所有行的出现次数(需先排序) | |
| 只显示唯一行 | uniq -u file.txt | 只显示仅出现过一次的行(非重复行) | |
| `sort file.txt | uniq -u` | 显示所有仅出现一次的行(需先排序) | |
| 忽略指定字段 | uniq -f2 file.txt | 忽略前 2 个字段后再判断重复行(字段以空格分隔) | |
uniq -s3 file.txt | 忽略前 3 个字符后再判断重复行 | ||
| 按字节比较 | uniq -w5 file.txt | 只比较每行的前 5 个字节来判断是否重复 |
更多推荐



所有评论(0)