正则表达式文本过滤

grep文本过滤

 1.grep 默认是按照以行为基本单位进行匹配和显示的。

 2.grep默认匹配只要包含模式字符即可

    grep -w 是按单词匹配,和普通的匹配不一致

    单词的分隔符, 数字加字母加下划线都算做单词的一部分

 

 

grep   -f   p.txt    /etc/passwd

 

匹配显示结果的行号

 

 

 grep 并且关系和 或者关系

  1.并且        grep     root       /etc/passwd   |   grep shutdown

  2.或者        grep     -e  root  -e  shutdown     /etc/passwd       

    

正则表达式

1.字符匹配

     .  表示一个任意字符  .放在[]里面就表示.本身这个字符

2.匹配次数

        某一个字符出现的次数

      *  表示*号前面的字符出现的次数是不确定的

3.位置锚定

   行首   ^         不能匹配中间某段字符串的开始

   行尾   $        不能匹配中间某一段字符串的结尾

  单词词首      \<root     root处于单词的最左侧 

  单词词尾       root\>    root处于单词的最右侧

4.分组

    1. echo wangwangwangggww | grep "\(wang\)\{3\}"

    2.后向引用

      

正则表达式和通配符的区别

 正则表达式匹配的是文件的内容或者标准输出的字符串,通配符匹配的是文件的名称.两者操作的对象不一致.

匹配字符串问题

 shell执行命令的时候,正则表达式是以整个输出作为字符串内容,包括看不到的空格符号。

 有些命令结果会输出一个或者多个空格,有些命令不会输出空格.

 

  1.在表达式中()符号前面和{}括号前面都必须要加上\(\) 和 \{\}.

     grep "^\(.*\):.*\1$" /etc/passwd

  2.正则表达式默认从字符串的最前面开始查找,但是如果锚定的是行尾,那么正则会从尾部开始查找

    1.从尾部开始查找

   

   2.从头部开始查找

   

 

   3.分组实例

    

   

      第一分组匹配到的字符串是7,最后面的[0-9]*\1 表示匹配到以7结尾而且7前面可以包含任意个数字的数字

    

 

 基本正则和扩展正则的区别

  1.基本正则语法  小括号和大括号前面需要加上\符号做转义

       grep  -w   "[0-9]\{2,3\}"    /etc/passwd

  2.扩展正则       小括号和大括号前面不要加上转义字符

      grep -Ew      "[0-9]{2,3}"     /etc/passwd

      egrep -w      "[0-9]{2,3}"     /etc/passwd

   

  

  

    

转载于:https://www.cnblogs.com/yxh168/p/8733630.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值