一、简述三剑客的作用
awk擅长取列;
sed擅长取行和替换;
grep擅长查找功能,比如可以根据关键字查询对应的日志。
二、三剑客使用介绍
1.awk
awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入、文件、数据排序、计算以及生成报表等。
①基本的命令语法:awk option 'pattern {action}' file
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。
-F 指定分割符,默认分隔符是空格
-f 调用脚本
-v 定义变量
BEGIN 初始化代码块,在对每一行进行处理前,初始化代码块。主要是引用全局变量
// 匹配代码块,可以是字符串也可以是代码块
{} 命令代码块,可包含一个或多个命令
; 多个命令使用分号分割
END 结束代码块,在每一行处理之后再执行的代码块
$0 整行输出
$n n表示每行第几列字段输出,如果n大于10需要用{}括起来,如${10}
NF 字段数量
NR 行号
FNR 与NR类似,多文件不递增,都从1开始
\t 制表符
\n 换行符
FS BEGIN时定义分隔符
RS 输入分隔符
OFS 输出字段分割符,默认是空格
ORS 输出的记录分割符,默认是换行符
②案例
2.sed
①基本命令语法
sed作用是过滤和替换文本。
sed [选项] '地址 命令' file
选项 描述
-n 不打印模式空间
-e 执行脚本、表达式来处理
-f 执行动作从文件读取执行
-i 修改原文件
-r 使用扩展正则表达式
地址 描述
first~step 步长,每 step 行,从第 first 开始
$ 匹配最后一行
/regexp/ 正则表达式匹配行
number 只匹配指定行
addr1,addr2 开始匹配 addr1 行开始,直接 addr2 行结束
addr1,+N 从 addr1 行开始,向后的 N 行
addr1,~N 从 addr1 行开始,到 N 行结束
命令 描述
s/要替换的内容/替换成的内容/ 替换字符串
p 打印当前模式空间
P 打印模式空间的第一行
d 删除模式空间,开始下一个循环
D 删除模式空间的第一行,开始下一个循环
= 打印当前行号
②案例
3.grep
①基本命令语法:
Usage: grep [选项]... 匹配项 [文件]...
支持的正则 描述
-E,--extended-regexp 模式是扩展正则表达式(ERE)
-e,--regexp=PATTERN 使用模式匹配,可指定多个模式匹
-f,--file=FILE 从文件每一行获取匹配模式
-i,--ignore-case 忽略大小写
-w,--word-regexp 模式匹配整个单词
-x,--line-regexp 模式匹配整行
输出控制 描述
-m,--max-count=NUM 输出匹配的结果 num 数
-n,--line-number 打印行号
-H,--with-filename 打印每个匹配的文件名
-h,--no-filename 不输出文件名
-o,--only-matching 只打印匹配的内容
-q,--quiet 不输出正常信息
-s, --no-messages 不输出错误信息
-r,--recursive 递归目录
-c,--count 只打印每个文件匹配的行数
--include=FILE_PATTERN 只检索匹配的文件
--exclude=FILE_PATTERN 跳过匹配的文件
--exclude-from=FILE 跳过匹配的文件,来自文件模式
--exclude-dir=PATTERN 跳过匹配的目录
-v,--invert-match 打印不匹配的行
内容行控制 描述
-B,--before-context=NUM 打印匹配的前几行
-A,--after-context=NUM 打印匹配的后几行
-C,--context=NUM 打印匹配的前后几行
--color[=WHEN], 匹配的字体颜色
②案例