“三剑客”:
正则表达式是为了护理大量的字符串及文本而定义的一套规则和方法
应用正则表达式的命令就是:grep(egrep)、sed、awk,俗称Linux三剑客
一、基本正则表达式(BRE)集合
字符 | 作用 |
---|---|
^ | 用法"^any",表示匹配以any开头的所有行 |
$ | 用法“$any”,表示匹配以any结尾的所有行 |
^$ | 组合符,表示空行,解释就是以“^”结尾的行或者以“$”开头的行 |
. | 表示匹配任意一个且只有一个字符的行 |
\ | 转义字符,让有特殊含义的字符不在特殊,表示为原来所代表的的字符 |
* | 匹配前一个字符(连续出现)0次或1次以上 |
.* | 组合符,匹配所有的的内容 |
.*$ | 组合符,匹配以任意多个字符结尾的内容 |
^.* | 组合符,匹配以任意多个字符开头的内容 |
[] | 匹配“[]”集合内任意一个字符 |
二、扩展正则表达式
字符 | 作用 |
---|---|
+ | 匹配前一个字符1次或者多次 |
[: /]+ | 匹配括号内的“:”或“/”字符1次或者多次 |
? | 匹配前一个字符0次或1次 |
() | 分组过滤,被括号起来的表示一个整体 |
\n | 引用前一个“()”括号的面的内容,例如(any)\n表示匹配anyany |
a{n,m} | 匹配前一个字符(这里是a)最少n次,最多m次 |
a{n,} | 匹配前一个字符(这里是a)最少n次 |
a{n} | 匹配前一个字符正好n次 |
a{,m} | 匹配前一个字符(这里是a)最多m次 |
a{m} | 匹配前一个字符(这里是a)正好m次 |
三、三剑客命令
老三:grep —文本过滤命令
-E:相当于egrep,支持扩展正则表达式
-l: 只显示文件名
-o:只比配显示到的内容,显示grep的执行过程
-i:不区分大小写
-n:显示行号
-w:按单词进行比配
-A:显示找出的行以及接下来的行
-B:显示找出的行以及上面的行
-C:显示找出的行以及上下的行
-r:递归过滤,过滤目录下面的所有层
-R:与-r类似 只不过多了可以处理软链接
老二:sed—流编辑器
命令参数:
-n:取消默认输出,常与sed的内置命令p使用
-i:修改文件的内容,而不是输出到终端,如果不是使用“i”,则是只是打印到终端,不会修改文件本身的内容
-e:允许多次编辑
内置的命令:
a:全拼为append,表示追加文本,在指定行后面添加一行或者多行文本
d:全拼为delete,表示删除匹配行的文本
i:全拼为insert,表示插入文本在指定行前添加一行或者多行的文本
p:全拼为orint,表示打印匹配行的内容,通常与-n连用
s# aaa # yyy #g:用yyy替换文本中所有的aaa
使用实例:
1、利用正则加sed替换的功能获取ip
另外一种命令写法
老大:awk
-F:指定分隔符显示某几列-----例如:awk -F “:” 就是以“:”为分隔符(如有空格,空格也算是分隔符)
$n:表示显示第n列的东西文件
NR == n:表示显示第n行的文件,显示不连续的行的中间用“;”隔开,例如{NR== 1;NR== 5}
RS:(Record Separator)记录着每行的结束标记 读取到这个标记这一行结束 默认是回车
ORS: Output Record Separator 输出分隔符
函数:
gsub:substitute,替换
awk ‘{gsub(/oldboy/,“oldgirl”)}1’ xxx 相当于 sed ‘s/oldboy/oldgirl/g’ xxx
substr:相当于命令cut -c
awk中的for循环:
使用实例:
1、以空格为分隔符,显示第二列的内容
2、显示文件的第二行的内容
3、过滤出非r字符开头的行
4、取CentOS 7的ip地址
小博对三剑客的一些基础的认知,还在那学习当中,如有错误,还各位大佬请见谅哟!!!!