grep介绍:
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
awk介绍:
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。
sed介绍:
sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。
需要明白一个点:grep擅长查找功能,sed擅长取行和替换。awk擅长取列。
grep的两种形式
第一种: grep [option][pattern][file1,file2]
grep -v abc text.txt
第二种:command | grep[pattern]
ps -ef | grep http
特 别 重 要 |
-v | 显示不匹配行信息(反向搜索) |
|---|---|---|
| -i | 搜索时忽略大小写 | |
| -n | 显示行号(文件中的行号) | |
| -r | 递归搜索(搜索文件夹) | |
| -F | 不按正则表达式匹配,按照字符串字面意思匹配 | |
| 了 解 一 下 |
-c | 只输出匹配行的数量,不显示具体内容 |
| -w | 匹配整词 | |
| -x | 匹配整行 | |
| -l | 只列出匹配的文件名,不显示具体匹配行内容 | |
| 查 看 日 志 |
-C n | 显示匹配行及其前后n行 |
| -B n | 显示匹配行及其前n行 | |
| -A n | 显示匹配行及其后n行 |
示例:
1.显示不匹配行信息 
2.显示行号 
3.递归搜索 搜索文件夹太多,加了 -l 只显示文件名 
4. 不按正则表达式匹配,按照字符串字面意思匹配 
5.只输出匹配行的数量,不显示具体内容 
6.匹配整词(就是单个词的意思) 
7.匹配整行(用引号选住整行内容) 
8. 显示匹配行及其前后2行 
9. 显示匹配行及其前2行 
10. 显示匹配行及其后2行
egrep或者grep -E 正则表达式
awk的两种形式:
awk ‘BEGIN{}pattern{commands}END{}’ file_name
| 语法格式 | 解释 |
|---|---|
| BEGIN | 正式处理数据之前 |
| pattern | 匹配模式 |
| {commands} | 匹配命令,可能多行 |
| END | 处理完所有匹配数据后执行 |
standard output | awk ‘BEGIN{}pattern{commands}END{}’
| 变量 | 含义 |
|---|---|
| $0 | 整行内容 |
| $1-$n | 当前行的第1-n个字段(按照指定分隔符分割后) |
| NF | 当前行的字段个数,也就是多少列 |
| NR | 当前行的行号,从1开始计数 |
| FNR | 多文件处理时,每个文件行号单独计数,都是从0开始 |
| FS | 输入字段分割符。不指定默认以空格或者Tab键分割 |
| RS | 输入行分割符。默认回车\n |
| OFS | 输出字段分割符。默认为空格 |
| ORS | 输出行分隔符。默认为回车 |
| FILENAME | 当前输入的文件名字 |
| ARGC | 命令行参数个数 |
| ARGV | 命令行参数数组 |
示例:
1.查询/etc/passwd目录用户名,:为分隔符 $1 表示第一列 
2.不需要分割符查询 第一列 
3.输出每一行多少列
awk ‘{print NF}’ 1.txt #可以输出最后一列的值 awk ‘{print $NF}’ 1.txt
4.输出行号
awk ‘{print NR}’ 1.txt 1 2
5.指定行分隔符
awk ‘BEGIN{RS=”:”}{print $0}’
6.指定列分隔符
awk ‘BEGIN{FS=”:”}{print $0}’
7.替换行与列分隔符
awk ‘BEGIN{RS=”—“;FS=”|”;ORS=”&”;OFS=”@@”}{print $0}’
sed的语法格式
sed [-hnV][-e
