2020-03-19正则表达式

grep/egrep工具的使用

  • 命令格式:grep [-cinvABC] ‘word’ filename
  • 常用选项
  • -c:表示打印符合要求的行数
  • -i:表示忽略大小写
  • -n:表示输出符合要求的行及其行号
  • -v:表示打印不符合要求的行
  • -A:后面跟一个数字(有无空格都可),例:-A2表示打印符合要求的行以及下面两行
  • -B:后面跟一个数字,例:-B2表示打印符合要求的行以及上面两行
  • -C:后面跟一个数字,例:-C2表示打印符合要求的行以及上下各两行
  • -A、-B、-C的用法:
    在这里插入图片描述
  • -A2:
    在这里插入图片描述
  • -B2:
    在这里插入图片描述
  • -C2:
    在这里插入图片描述
  • 过滤出带有某个关键词的行,并输出行号:
    在这里插入图片描述
  • 过滤出不带有某个关键词的行,并输出行号:
    在这里插入图片描述
  • 过滤出所有包含数字的行:
    在这里插入图片描述
  • 过滤出所有不包含数字的行:
    在这里插入图片描述
    正则表达式中,^表示行的开始,$表示行的结尾,^$表示空行
  • 打印出不以英文开头的行:
    在这里插入图片描述
 - 当方括号[]遇到类似[15]的形式时。表示只含有1或者5
 - 如果要过滤数字以及大小写字母,则写成[0-9a-zA-Z]的形式
 - [^字符]表示除[]内字符之外的字符    ^写到方括号里面和外面有区别的

在这里插入图片描述

  • 过滤出任意一个字符和重复字符:
    在这里插入图片描述
‘.’表示任意一个字符。   r.o表示把r与o之间有一个任意字符的行过滤出来

在这里插入图片描述

*表示零个或多个*前面的字符。    ooo*表示oo、ooo、oooo..或更多的o

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

.*表示零个或多个任意字符,空行也包含在内。    ooo*表示oo、ooo、oooo..或更多的o
  • 指定要过滤出的字符出现次数:
    在这里插入图片描述
{}内部为数字,是表示前面的字符要重复的次数。
注意:{}左右都要加上转义字符\
“{}”还可以表示一个范围,格式为{n1,n2},其中n1<n2,表示重复n1到n2次前面的字符,n2还可以为空,则表示大于等于n1。

egrep:

  • 过滤出一个或多个指定的字符:
  • egrep使用的“+”符号,表示匹配1个或多个+前面的字符,“+”不支持被grep使用
  • {},在使用egrep时,不需要加\转义
    例:
    在这里插入图片描述
  • 过滤出零个或一个指定的字符:
    o?、oo?、ooo?.. 显示结果会以命令o的多少减少一个o开始
  • o? :
    在这里插入图片描述
  • oo?:
    在这里插入图片描述
  • ooo?:
    在这里插入图片描述
  • oooo?:
    在这里插入图片描述
  • ooooo?:
    在这里插入图片描述
  • 过滤出字符串1或字符串2:
    在这里插入图片描述
  • egrep中()的应用:
    在这里插入图片描述
()表示一个整体     r(oo|at)o 表示包含rooo或rato的行
()可以和其他符号组合  (oo+)表示一个或多个oo

在这里插入图片描述

sed工具的使用

sed是流式编辑器

  • sed命令的格式为:sed -n 'n’p filename,单引号内的n是一个数字,表示第几行。
  • -n选项的作用是只显示我们要打印的,无关要紧的内容不显示
  • 例:
    在这里插入图片描述
所有行都打印出来,sed命令格式:sed -n '1,$'p filename
  • 例:
    在这里插入图片描述
  • 指定一个区间打印:
    在这里插入图片描述
  • 打印包含某个字符串的行:
    在这里插入图片描述
    不要忘了/…/
在grep中使用的特殊字符(^、$、.、*等),也能在sed中使用
  • 选项-e可以实现多个行为:
    在这里插入图片描述
  • 删除某些行:
-d:表示删除的动作
不仅可以删除指定的单行以及多行,还可以删除匹配某个字符的行,还可以删除从某一行开始到文档最后一行
注:这个操作只是在显示器屏幕上并不显示这行,原文档还是好的

在这里插入图片描述

  • 替换字符或字符串:
s:表示替换
g:表示本行全局替换   //如果不加g,则只替换本行出现的第一个

例:
在这里插入图片描述

  • 除了/作为分隔符,还有#和@:在这里插入图片描述
  • 如何删除文档中所有的数字或字母:
    在这里插入图片描述
  • 调换两个字符串的位置:
  • 在sed中,小括号属于特殊符号,需要在前面加转义字符\,替换时则写成\1、\2、\3的形式
    在这里插入图片描述
  • 清晰版:-r选项
    在这里插入图片描述
  • sed在某一行前后增加指定内容:
    在这里插入图片描述
  • 直接修改文件的内容:
    在这里插入图片描述

awk工具的使用

  • awk也是流式编辑器

  • 针对文档中的行来操作,一行一行的执行

  • 截取文档中的某个段

-F:作用是指定分隔符        //如果不加-F选项,则以空格或者tab为分隔符
print为打印,用来打印某个字段
$1、$2分别为第1个字段,第2个字段,以此类推
$0表示整行

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

注意:
awk格式:-F后面紧跟单引号,单引号内为分隔符。
print的动作要用{}括起来,否则会报错
print可以打印自定义的内容,自定义内容要用双引号括起来

在这里插入图片描述

  • 匹配字符或字符串:
    在这里插入图片描述
  • awk可以让某个段去匹配
  • ~是匹配的意思,也可以多次匹配
    在这里插入图片描述
    在这里插入图片描述
  • 条件操作符:
awk可以用逻辑符号进行判断         //   == 、> 、 >= 、< 、<= 、 !=
和数字比较时,要把比较的数字用双引号引起来,就不会认为是数字,而认为是字符,不加双引号就认为是数字

在这里插入图片描述

  • uid大于等于600的行,awk把所有的数字当作字符了(不理想状态):
    在这里插入图片描述
  • uid大于等于600:
    在这里插入图片描述
  • !=不匹配:
    在这里插入图片描述
  • 大/小于:
    在这里插入图片描述
  • awk还可以使用&&和||,分别代表“并且”和“或者”
  • &&:
    在这里插入图片描述
  • ||:
    在这里插入图片描述
  • awk的内置变量:
awk常用的变量有OFS、NF和NR
OFS和-F有类似功能,也是用来定义分隔符,但它用在输出的时候定义
NF表示用分隔符分隔后一共有多少段
NR表示行号
  • OFS的用法:
    在这里插入图片描述
  • 高级一些的用法:
    在这里插入图片描述
  • NF:
    在这里插入图片描述
  • $NF是最后一段的值:
    在这里插入图片描述
  • NR:
    在这里插入图片描述
  • 可以使用NR作判断:
    在这里插入图片描述
  • NR配合段匹配使用:
    在这里插入图片描述
  • awk中的数学运算:
  • awk可以更改字段:
    在这里插入图片描述
  • 对各个段的值进行数学运算:
    在这里插入图片描述
  • 计算某个段的总和:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值