Linux基础学习:正则表达式基础知识

一、正则表达式
(一)、grep/egrep工具的使用
• egrep为grep的扩展版本,可完成grep完成不了的工作
• grep工具只能实现查找功能
• 用法:grep【选项】‘word’【filename】
• -c:不是打印符合要求的行数;
• -i:表示忽略大小写
• -n:表示输出符合要求的行及其行号
• -v:表示打印不符合要求的行
• -A:后跟一个数字(有无空格都可以),如-A2表示打印符合要求的行以及下面两行
• -B:后跟一个数字,如-B2表示打印符合要求的行以及上面两行
• -C:后跟一个数字,如-C2表示打印符合要求的行以及上下两行

  1. 过滤出带有某个关键字的行,并输出行号
    • grep -n ‘word’【filename】
  2. 过滤出不带有某个关键字的行,并输出行号
    • grep -nv ‘word’【filename】
  3. 过滤出所有包含数字的行
    • grep ‘[0-9]’【filename】
    • 只要有一个数字就会被匹配到
  4. 过滤出所有不包含数字的行
    • grep -v‘[0-9]’【filename】
    • 只要有一个数字就不会被匹配到
  5. 过滤出所有一#开头的行
    • grep -v ‘^#’【filen】
    • 含有空行
    • 正则表达式中,^表示行的开始
  6. 顾虑掉所有空行和以#开头的行
    • grep -v ‘^#’【filen】|grep -v‘^ ’ • 正 则 表 达 式 中 , ’ • 正则表达式中, 表示行的结尾
  7. 打印不以英文字母开头的行
    • grep ‘[^a-zA-Z]’【filename】
    • 在[]中,[0-9]表示数字,而类似[15]则表示含有1或5,我理解为1、5为字符
    • 若过滤数字和字母大小写,则写为类似[0-9a-zA-Z]的形式
    • [字符]表示除[]内字符以外的字符,在[]的内外是有区别的
  8. 过滤出任意一个字符和重复字符
    • grep‘r.o’【filename】
    • . 表示任意一个字符。r.o表示过滤出r与o之间有一个任意字符的行
    • grep ‘ooo*’【filename】
    表示零个或多个前面的字符 。ooo*表示oo、ooo、oooo……或更多的o
    • .*表示零个或多个任意字符
  9. 指定要过滤出的字符出现次数
    • grep‘o{2}’【filename】
    • {}内部为数字,表示前面的字符要重复的次数。{}的左右需加转义符
    • {}还可表示范围,格式为{n1,n2},其中n1<n2,表示重复n1到n2次前面的字符,若n2为空,则表示大于或等于n1次
  10. 过滤出一个或多个指定的字符
    • egrep‘o+’【filename】
    • +不支持grep直接使用
    • {}可以被egrep直接使用,不需要加转义符\
  11. 过滤出零个或一个指定的字符
    • egrep ‘o?’【filename】
  12. 过滤出字符串1或字符串2
    • rgrep‘字符串|字符串’【filename】
  13. egrep中()的应用
    • egrep‘r(00|at)o’【filename】
    • ()表示一个整体,上例中会把包含rooo或rato的行过滤出来

(二)、sed工具的使用
• sed工具能替换的文本内容,并输出到屏幕上

  1. 打印某行
    • sed -n 'n’p 【filename】单引号内的n是一个数字
    • -n选项表示只打印要显示的行,无关紧要的内容不显示
    • sed -n '1,$'p 【filename】打印所有行
    • sed -n 'n1,n2’p 【filename】打印n1、n2之间的内容
  2. 打印包含某个字符串的行
    • sed -n '/root/'p 【filename】打印root字符串
    • sed -e '1’p -e '/111/'p -n 【filename】
    • -e选项可实现多个行为
    • '//'用法类似grep,grep中使用的特殊字符(^、$、. 、*等)也可以在sed中使用
  3. 删除某些行
    • sed '1’d【filename】
    • sed‘/oot/'d 【filename】
    • 参数d表示删除动作
    • 可删除指定行及多行,也可删除匹配字符
    • 该操作仅不显示匹配到行在屏幕上,文件无损坏
  4. 替换字符或字符串
    • sed ‘1,2s/ot/to/g’ 【filename】
    • 参数s表示替换;参数g表示本行全局替换,不加则只替换本行第一个
  5. 调换两个字符串的位置
    • sed ‘s/(rot)(.)(bash)/\3\2\1’【filename】
    • sed -r 's/(rot)(.
    )(bash)/\3\2\1’【filename】
    • ()在sed中属于特殊符号,前面必须加转义字符
    • -r选项表示启用扩展的正则表达式,当与其他选项使用时应作首选项
  6. 直接修改文件的内容
    • sed -i ‘s/ot/to/g’【filename】

(三)、awk工具的使用
• 类似sed,但比sed更加强大,针对文本的行来操作,一行一行地执行

  1. 截取文档中的某个段
    • head -n2【filename】|awk -F ‘:’ ‘{print $1}’
    • -F选项表示指定分隔符。若不加,则以空格或tab为分隔符
    • print表示打印的动作,要用{}括起来,否则会报错用
    • $1表示第一个字段,$2表示第二个字段,以此类推,但$0表示整行
  2. 匹配字符或字符串
    • awk ‘/oo/’ 【filename】类似sed,可实现grep的功能,无颜色显示
    • awk -F ‘:’ ‘/root/’ {print $1,$3} /test/ ‘{print $1,$3}’【filename】多次匹配,该命令表示匹配完root,再匹配test
  3. 条件操作符
    • awk -F ‘:’ ‘$3==“0”’ 【filename】
    • awk中可用逻辑符号进行判断,比如上面的 == 就是等于,此外还有>、>=、<、<=、!=、&&、||等
    • 比较的数字被双引号引起来时,awk会把数字认为是字符,如上例的0会被认为是字符;若数字不加双引号则会被认为是数字,如’$3==0’
  4. awk的内置变量
    • awk常用变量OSF、NF、NR
    • OSF类似-F选项,用来定义分隔符,但OSF是在输出的时候定义
  5. awk中的数学运算
    • awk -F ‘:’ ‘$1-“root”’【filename】把文件中第一个字段的值更改为root
    • awk -F ‘:’ ‘{$7=$3+$4;print $0}’【filename】文件中第7个字段的值等于第3个和第4个字段的值的和,并打印整行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值