Linux中的正则表达式

在说正则表达式之前再加几个小知识

1、输出重定向:

标准输出:是将信息输出在终端上

标准错误输出:在执行命令的过程中所产生的错误信息也是输出在终端上的

标准输出:是从键盘输入的

1.1、标准输出重定向

 作用:将本来要显示在终端上的信息重定向到一个文件中

实现方法:

用:

    >                        将文件中原有的内容全部删除,然后进行写入

    >>                      在文件原有的内容之后,追加新的内容

例如:在终端上输出123并追加到a.txt里

echo "123" >> a.txt 

1.2、标准错误输出 

实现方法:

2>                将文件中原有的内容全部删除,然后进行写入

2>>              将文件中原有的内容全部删除,然后进行写入

例如:将ls /sdjfl 这个命令追加到黑洞文件(/dev/null)

ls /sdifl 2>> /dev/null 

2、通配符

2.1、*:表示任意长度的任意字符
例子:删除根下以 a 开头文件
           rm -rf a*
2.2、?:表示一个长度的任意字符
例子:删除根下文件名第二个是 a 的文件
           rm -rf ?a
2.3、;:链接多个命令
    cd -;cd -        返回上上次所在的路径
&&:只有前面的命令执行成功后,后面的命令才会执行
||:只有前面命令执行失败后,后面的命令才会执行
2.4、#:注释行(描述信息,但是不执行)
2.5、|:传递命令的执行结果
2.6、~:返回当前用户的家目录
2.7、-:返回上次所在目录
2.8、$:变量前要加的符号
2.9、/:路径分隔符(或者是根)
2.10、“>  >>”:标准重定向
2.11、” <<“:标准错误重定向

        用来打印菜单

        cat <<EOF

        >1

        >2

        >EOF        #结尾退出用这个

2.12、引号
' ' : 弱引用,引用的内容原样输出
" " : 强引用,引用中变量会变成变量的值
`` : 命令替换
 2.13、点(.)
        表示当前目录
        ..上一级目录
2.14、花括号扩展:{}
用法:
        创建1.dir到10.dir目录
        mkdir {1..10}.dir

正则表达式简介:

构成:是由一堆的特殊符号和字母构成的(元字符)

作用:通过对文本中的内容进行过滤,然后对文件中的内容进行过滤

 正则表达式的种类:

        基础正则表达式、扩展正则表达式

通常结合三个命令来使用(又称三剑客)

        grep、sed、awk

今天我们来学习grep命令

grep命令

作用:对文件中的内容进行过滤

格式:grep 选项 匹配内容 文件名

选项:

        -v:取反

        -o:仅仅显示处所匹配的内容

        -E:使用扩展

        -i:忽略大小写

 通配符和正则的区别:!!!!

通配符是对文件名进行匹配,但是正则表达式是对文件中的内容进行匹配的

 正则中的元字符

1、匹配单个字符

点(.)代表一个任意字符

2、[ ]:表示范围中的其中任意一个

[123456]:表示匹配中的其中一个
[0-9]:表示匹配所有的数字
[A-Z]:表示匹配所有大写的字母
[a-z]:匹配所有小写的字母
[a-Z]:匹配所有的字母

3、用字符集的方式表达

[[:space:]]:表示一个空格
[[:digit:]]:表示任意一个数字
[[:lower:]]:表示任意一个小写字母
[[:upper:]]:表示任意一个大写字母
[[:alpha:]]:表示任意一个字母
[[:alnum:]]:表示任意一个字母+数字
[[:punct:]]:表示任意一个标点符号

4、^[ ]:表示以中括号开头的行

       [^ ]:表示除了中括号里面的行

例子:过滤没有包含 qaz 的行
grep [^qaz] file

5、显示匹配到的行前后的若干行

-An:显示匹配到的内容的后n行
-Bn:显示匹配到的内容的前n行
-Cn:显示匹配到的内容的前后n行

 例子:匹配包含root的行的前3

grep -B3 "root" file

6、次数匹配

"*":代表前面的字符出现了任意次数(0-n次)

".*":代表任意长度的任意字符

"?":代表其前面的字符出现最多一次(注意:要结合-E使用)
  例子:grep -E "a{1,}b" 11.txt         b前面的a至少1次最多不限

\{m,n\}:表示前面字符出现最少m次,最多出现n次(当用-E的时候可以不加\)
  例:-E a{m,n}b

7、位置锚定

^n:表示以n为开头的行

n$:表示以n为结尾的行

\<n:表示单词首部为n开头的
n\>:表示单词尾部以n为结尾的行
^$:表示显示空白行

8、分组

\( \) :将括号里面的内容看作一个整体
\1:表示引用第一个分组
\2:表示引用第二个分组

例子:在11.txt中,过滤出出现过俩个相同数字的行
grep "\([[:digit:]]\).*\1" 11.txt

扩展正则表达式:

格式是:

格式1:grep -E 匹配内容 文件

格式2:egrep 匹配内容 文件

+等同于{1, }:其前面的字符至少出现1次

或(|)

例子:过滤出开头是 a (不区分大小写)的行
egrep "^(a|A)" 11.txt
egrep "^[aA]" 11.txt
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值