文本处理大师:Linux中grep、sed和awk的绝佳教程

1 grep 搜索关键字

全局搜索正则表达式

1.1 基本格式

grep root passwd #过滤含有root关键字

文本处理大师:Linux中grep、sed和awk的绝佳教程_第1张图片
-e 多个过滤词

grep -e root -e bash pa
grep -E "root|bin" pa # 等同于上面的命令

文本处理大师:Linux中grep、sed和awk的绝佳教程_第2张图片
-i 忽略大小写
文本处理大师:Linux中grep、sed和awk的绝佳教程_第3张图片
-E 过滤

grep -E "\ passwd ##root字符之前不能有字符
grep -E "root\>" passwd ##root字符之后不能有字符

文本处理大师:Linux中grep、sed和awk的绝佳教程_第4张图片
-v 反向过滤
文本处理大师:Linux中grep、sed和awk的绝佳教程_第5张图片

grep -数字 ##显示过滤行以及上面几行和下面几行
grep -n ##显示匹配的行所在行号
grep -A ##显示过滤行以及下面几行
grep -B ##显示过滤行以及上面几行
文本处理大师:Linux中grep、sed和awk的绝佳教程_第6张图片

^westos以westos开有
westos$ 以westos结尾

文本处理大师:Linux中grep、sed和awk的绝佳教程_第7张图片

1.2 字符匹配

w....s ##w开头s结尾中间4个任意字符
.....s ##s结尾前面5个任意字符
* ##字符出现任意

文本处理大师:Linux中grep、sed和awk的绝佳教程_第8张图片

+ ##1次到任意次

文本处理大师:Linux中grep、sed和awk的绝佳教程_第9张图片

文本处理大师:Linux中grep、sed和awk的绝佳教程_第10张图片

{n} ##n此
{m,n} ##m到n次
{0,n} ##0-n次
{,n} ##0-n次
{m,} ##最少m次
(lee){2} ##lee字符串出现2次

文本处理大师:Linux中grep、sed和awk的绝佳教程_第11张图片

2 sed 流编辑器

sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

2.1 p 显示

sed -n 5p westos ##显示第五行
sed -n 3,5p westos ##显示3到5行
sed -ne "3p;5p westos ##显示3和5行
sed -ne 1,5p westos ##1-5行
sed -ne '5,$p' westos ##5到最后以行
sed -n '/^#/p' fstab ##显示以#开头的行

文本处理大师:Linux中grep、sed和awk的绝佳教程_第12张图片

2.2 d 删除

sed 5d westos ##删除第五行
sed '/^#/d' fstab ##把#开头的行删除
sed '/^UUID/!d' fstab ##除了UUID以外的行都删除
sed -e '5,$d' westos ## 同时操作第5行和最后一行

文本处理大师:Linux中grep、sed和awk的绝佳教程_第13张图片

2.3 a 添加

sed '1ahello' fstab # 在第一行后面添加

文本处理大师:Linux中grep、sed和awk的绝佳教程_第14张图片

sed '/^UUID/a666' fstab # 符合要求的行添加

文本处理大师:Linux中grep、sed和awk的绝佳教程_第15张图片

sed '/^UUID/a6\n66' fstab # 换行添加

文本处理大师:Linux中grep、sed和awk的绝佳教程_第16张图片

2.4 i 插入

sed '1ihello' fstab

文本处理大师:Linux中grep、sed和awk的绝佳教程_第17张图片

2.5 w 输出重定向

sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中

文本处理大师:Linux中grep、sed和awk的绝佳教程_第18张图片

2.6 r 合并文件

文本处理大师:Linux中grep、sed和awk的绝佳教程_第19张图片

2.7 s 替换

2.7.1 普通替换

sed 's/bin/6666/g' passwd # 替换bin为6666

文本处理大师:Linux中grep、sed和awk的绝佳教程_第20张图片

文本处理大师:Linux中grep、sed和awk的绝佳教程_第21张图片
文本处理大师:Linux中grep、sed和awk的绝佳教程_第22张图片

2.7.2 转义字符替换

sed 's/\//???/g' passwd
sed 's@/@???@g' passwd # 两条命令是等效的

文本处理大师:Linux中grep、sed和awk的绝佳教程_第23张图片

2.8 f 执行文件中多条命令

sed -f rule fstab

文本处理大师:Linux中grep、sed和awk的绝佳教程_第24张图片

3 awk 报告生成器

截取所需要的数据

3.1 显示列

awk -F : '{print $0}' passwd
awk -F : '{print $1}' passwd
awk -F : '{print $1,$7}' passwd # 显示第一列和第7列

文本处理大师:Linux中grep、sed和awk的绝佳教程_第25张图片

3.2 条件

awk -F : '/^root/{print $1,$7}' passwd # // 里面的内容是条件判断
awk -F : '/^root/||/^lp/{print}' passwd # 或者
awk -F : '/^root/&&/bash$/{print}' passwd # 并且

文本处理大师:Linux中grep、sed和awk的绝佳教程_第26张图片

awk -F : '/bash$/{print NR}' passwd # 行
awk -F : '/bash$/{print $NF}' passwd # 列

文本处理大师:Linux中grep、sed和awk的绝佳教程_第27张图片

awk -F : 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd

文本处理大师:Linux中grep、sed和awk的绝佳教程_第28张图片

awk -F : '$3!~/^0/&&/bash$/{print}' passwd # 第三列,以0开头,去掉后,并且剩余的行结尾是bash

文本处理大师:Linux中grep、sed和awk的绝佳教程_第29张图片

4 编写脚本

4.1 请显示系统中能被su命令切换的用户名称

grep -E "\ /etc/passwd

文本处理大师:Linux中grep、sed和awk的绝佳教程_第30张图片

4.2 请显示网卡IP

ifconfig ens160 | awk '/inet\>/{print $2}'

文本处理大师:Linux中grep、sed和awk的绝佳教程_第31张图片

你可能感兴趣的:(linux,chrome,运维)