Linux
基础知识
01搭建Centos7系统
02软件管理仓库
03Shell
04查看帮助命令
05系统工作命令
06系统状态检测命令
07工作目录切换命令
08文本文件编辑命令
09文件目录管理
10打包压缩与搜索命令
11输入输出重定向
12管道符与通配符
13Vim编辑器
14Shell脚本
15shell流程控制语句
16用户管理操作
17文件权限与归属
18文件隐藏属性
19文件访问控制列表
20su与sudo
21存储结构
22物理设备命名规则
23文件系统
24挂载硬件设备
25虚拟机添加硬盘设备
26系统中操作添加硬盘设备
27添加交换分区
28磁盘容器配额
29软硬方式链接
30RAID
31LVM
32程序安装与管理
33计划任务
34日志文件分析
35测试网络联通性
36FTP服务
37操作系统基本符号
38操作系统三剑客
39shell基础
40shell语法
41DNS
42Apache概述
43Nginx概述
44集群概述
Vmware安装Ubuntu
更换源
三剑客
更换源
输入输出
安装VMware-Tools
SSH服务
反弹shell
-
+
首页
三剑客
在 Linux 系统中,“三剑客” 通常指 **grep、sed、awk** 三个命令。它们是文本处理领域的核心工具,各自专注于不同的文本操作场景(搜索、编辑、分析),且支持正则表达式,能高效处理结构化或非结构化文本。 ## grep Global Regular Expression Print grep 的核心功能是**在文本中搜索匹配指定模式(正则表达式)的内容,并输出匹配结果**,相当于 “文本查找器”。 > 特性 支持标准正则表达式(默认)和扩展正则表达式(需加 -E 选项)。 可递归搜索目录下所有文件(-r 选项)。 支持忽略大小写、显示行号、反向匹配(排除指定内容)等灵活筛选。 > 常用选项 | 选项 | 功能说明 | 示例 | | ----- | -------------------------------- | ----------------------------------------------------------- | | -i | 忽略大小写匹配 | grep -i "error" /var/log/syslog(匹配 Error/ERROR 等) | | -r/-R | 递归搜索目录下所有文件 | grep -r "password" /home/user(递归查找含 password 的文件) | | -n | 显示匹配行的行号 | grep -n "import" code.py(显示导入语句的行号) | | -v | 反向匹配(输出不包含模式的行) | grep -v "^#" config.conf(过滤注释行,只保留非 # 开头的行) | | -E | 使用扩展正则表达式(支持 () 等) | grep -E "error warn" log.txt(匹配 error 或 warn) | | -c | 统计匹配行的数量 | grep -c "failed" login.log(统计登录失败次数) | > 场景 日志分析:快速定位错误(error)、警告(warn)等关键字。 代码检索:查找特定函数、变量在代码文件中的位置。 配置文件过滤:排除注释行和空行,提取有效配置。 ## sed Stream Editor sed 的核心功能是**对文本流(逐行读取的文本)进行批量编辑**,如替换、删除、插入、追加等,无需打开文件即可完成修改,适合自动化脚本中的文本处理。 > 核心特性 非交互式编辑:无需手动操作,直接通过命令行完成修改。 行处理模式:逐行读取文本,按预设规则处理后输出。 支持正则表达式:可基于模式匹配目标行进行编辑。 > 语法 sed 基本语法: ```bash sed [选项] '操作命令' 文件名 ``` 常用操作命令:s(替换)、d(删除)、i(行前插入)、a(行后追加)。 | 功能需求 | 命令示例 | 说明 | | ------------------------ | --------------------------------- | ------------------------------------------------------- | | 替换文本(单行) | sed 's/old/new/' file.txt | 将每行第一个 old 替换为 new(不修改原文件,仅输出结果) | | 替换文本(全行所有匹配) | sed 's/old/new/g' file.txt | g 表示 “全局替换”,替换每行所有 old | | 直接修改原文件 | sed -i 's/old/new/g' file.txt | -i 选项:直接修改原文件(慎用!建议先测试) | | 删除指定行 | sed '3d' file.txt | 删除第 3 行;sed '/^$/d' file.txt 删除空行 | | 行前插入文本 | sed '2i hello' file.txt | 在第 2 行前插入 hello | | 行后追加文本 | sed '/error/a fix it now' log.txt | 在包含 error 的行后追加 fix it now | > 场景 批量修改配置文件:例如将所有服务器配置中的 old_ip 替换为 new_ip。 日志清理:删除日志中的空行、注释行,或提取特定时间段的日志。 脚本自动化:在 Shell 脚本中动态编辑文件内容(如生成配置文件)。 ## awk Aho-Corasick-Kernighan awk 是功能最强大的三剑客工具,核心定位是**结构化文本分析**(按字段分割文本),支持条件判断、循环、变量、函数等编程特性,可实现复杂的文本提取、统计和计算。 > 特性 字段化处理:默认按**空格或制表符**分割文本,每个分割部分称为 “字段”(用 $1 $2 ... 引用,$0 代表整行)。 模式 - 动作模型:`awk '模式 {动作}' 文件名`,仅对匹配 “模式” 的行执行 “动作”。 内置变量与函数:提供丰富的内置变量(如 NF 字段总数、NR 行号)和函数(如字符串处理、数学计算)。 > 常用示例 | 功能需求 | 命令示例 | 说明 | | ------------------ | ------------------------------------------- | ------------------------------------------------------------ | | 提取指定字段 | awk '{print $1, $3}' data.txt | 输出每行的第 1 个和第 3 个字段(默认空格分割) | | 按自定义分隔符分割 | awk -F ',' '{print $2}' csv_file.csv | -F ',' 指定逗号为分隔符,提取 CSV 文件的第 2 列 | | 条件筛选行 | awk '$3 > 100 {print $1, $3}' score.txt | 输出第 3 个字段(分数)大于 100 的行的第 1、3 字段 | | 统计字段总和 | awk '{sum += $2} END {print sum}' sales.txt | 计算第 2 字段(销售额)的总和,END 表示所有行处理完后执行 | | 按行号或内容匹配 | awk 'NR == 5 {print}' file.txt | 输出第 5 行;awk '/error/ {print $0}' log.txt 输出含 error 的行 | > 场景 数据统计:计算日志中的请求总数、平均响应时间,或 CSV 文件中的数值总和。 结构化文本提取:从日志(如 time ip url status 格式)中提取 IP 和状态码。 复杂文本处理:结合条件判断(if-else)和循环(for),实现自定义分析逻辑(如筛选特定日期的日志并统计)。
毛林
2025年10月9日 16:53
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码