shell中的文本处理工具——grep、sed、awk

一、grep

1. 基础知识

  1. 作用:用于文本搜索,文本过滤器
  2. grep格式:grep  匹配条件 处理文件
  3. 扩展:grep -E=egrep

2. 常用参数

参数含义
grep root passwd过滤root关键字
grep ^root passwd以root开头
grep root$ passwd以root结尾
grep -i root passwd忽略大小写
grep -E “<root” passwdroot字符之前不能有字符
grep -E “root>” passwdroot字符之后不能有字符
grep -数学显示过滤行以及上面几行和下面几行
grep -n显示匹配的行所在行号
grep -A显示过滤行以及下面几行
grep -B显示过滤行以及上面几行
grep -v反向过滤

在这里插入图片描述
在这里插入图片描述

3. grep字符数量匹配规则

符号含义
^jia以jia开头
jia$以jia结尾
w…dw开头d结尾中间4个任意字符
…ss结尾前面5个任意字符
-E *字符出现0到任意次
-E ?0到1次
-E +1到任意次
-E {n}n次
-E {m,n}m到n次
-E {,n}0到n次
-E {m,}最少m次
-E (jia){2}jia字符串出现2次

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、sed

1. 命令格式

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

2. 对字符的处理

显示:p;删除:d;添加:a;替换:c;写入:w;插入:i;整合:r
显示:p

字符含义
sed  -n 5p jia显示第五行
sed  -n 3,5p jia显示3到5行
sed  -ne “3p;5p” jia显示3和5行
sed  -ne 1,5p jia显示1-5行
sed  -ne ‘8,$p’ jia显示8到最后一行
sed  -n ‘/^#/p’ /etc/fstab显示/etc/fstab文件中以#开头的行

删除:d
在这里插入图片描述
在这里插入图片描述

字符含义
sed 5d  jia删除第五行
sed  ‘/^#/d’  fstab把#开头的行删除
sed  ‘/UUID/!d’  fstab除了UUID以外的行都删除
sed  -e  ‘5,$d’  jia删除5到最后一行

在这里插入图片描述
在这里插入图片描述
添加:a

字符含义
sed  -e  ‘$a hello world’  fstab文件最后一行添加hello world
sed  -e  ‘$a hello\nworld’  fstab换行添加hello world
sed  -e  ‘/^#/a hello world’  fstab在文件中以#开头的每一行下添加hello world

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
替换:c

字符含义
sed  -e  ‘/^#/chello world’  fstab替换以#开头的行为指定内容hello world
sed  -e  ‘5chello world’  jia替换指定行第五行为hello world

在这里插入图片描述
在这里插入图片描述
把符合的行写在指定文件中:w
sed  -e  ‘/^UUID/w jiafile’  fstab:把fstab中UUID开头的行写入到jiafile中
在这里插入图片描述
插入:i
sed  ‘5ihello world’  jia:在文件第五行上面插入指定内容hello world
在这里插入图片描述
整合文件:r
sed  ‘5r haha’ jia:将haha文件的内容整合到jia文件第五行的下面
在这里插入图片描述

3. 字符替换

格式含义
sed ‘s/: /###/g’ file把文件全文中的:替换成###
sed ‘s/: /###/’ file只替换第一列中的:为###
sed ‘1,5s/: /###/g’ file替换第一行到第五行的:为###
sed ‘1s/: /###/g’ file只替换第一行的:为###
sed ‘1s/: /###/g;5s/: /###/g’ file替换第一行和第五行的:为###
sed ‘/lp/,/shutdown/s/: /###/g’ file替换字符lp到shutdown之间的行中的:为###
sed ‘s/\//####/g’ file替换全文中的/为####,注意需要使用“\”进行转译
sed ‘s@/@####@g’ file@也是分隔符,可用于替换
sed ‘s@/@####@g’ -i file把sed处理的内容保存到file文件中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、awk

1. 基础知识

  1. 含义:AWK 是一种用于处理文本的编程语言工具。
  2. AWK大致操作流程是扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
  3. 处理模板:awk  -F  分隔符  ‘BEGIB{}{}END{}’  FILENAME
    默认以空格做为分隔符,不用加参数-F
  4. 命令格式:awk   ‘条件{动作}’。{}以外为条件
    在这里插入图片描述

2. 常用信息

字符含义
NR行数
NF列数
FILENAME文件名称本身
jiajia变量值
“jia”jia字符串
$n第n列(n等于1到任意数),例如$1表示第一列
$0所有的列

在这里插入图片描述
在这里插入图片描述

3. 运算规则

对于执行两种条件时,可以存在多种关系:

/bash$/一个条件,表示以bash结尾
/条件1|条件2/一个条件包含两个元素,两元素是或者关系
/条件1/||/条件2/条件1或者条件2
/条件1/&&/条件2/条件1并且条件2

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值