正则介绍
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
grep/egrep
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。
egrep 命令是一个搜索文件获得模式,使用该命令可以任意搜索文件中的字符串和符号,也可以为你搜索一个多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字、一个句子。
选项:
-c 行数
-i 不区分大小写
-n 显示行号
-v 取反
-A 后面跟数字,过滤出符合要求的行以及下面n行
-B 同上 ,过滤出符合要求的行以及上面n行
-c 同上,同时过滤符合要求的行以及上下各n行
-r 遍历所有子目录
grep/egrep 示例:
[root@localhost a]# grep -n 'root' /etc/passwd 显示行号
[root@localhost a]# grep -nv 'nologin' /etc/passwd 显示行号,筛选不含nologin字符
[root@localhost a]# grep '[0-9]' /etc/inittab //表示显示出数字
[root@localhost a]# grep -v '[0-9]' /etc/inittab 不选数字
[root@localhost a]# cat 1.txt 12121414 #141212414 #sdfsfefwfw sfsfsfsf 123556 [root@localhost a]# grep -v '^#' /tmp/a/1.txt 显示开头不是#的行 //^ 表示 以什么开头 12121414 sfsfsfsf 123556 [root@localhost a]# grep '[^0-9]' /etc/inittab [^] 表示非 即显示不包含数字
[root@localhost a]# grep '[^a-zA-Z]' 1.txt 表示筛选数字
[root@localhost a]# grep '[r.o]' /etc/passwd .表示任意一个字符
[root@localhost a]# grep -n 'oo*' /tmp/a/1.txt *表示重复左边n个字符 n:0个或多个
[root@localhost a]# grep '.*' 1.txt o *表示匹配左边的字符n个字符 即所有的字符 ro roo roo rooo roooo rooooo
[root@localhost a]# grep 'user.*bash' /etc/passwd user:x:1000:1000:user:/home/user:/bin/bash
[root@localhost a]# grep 'o\{2\}' /etc/passwd //表示匹配2个o
[root@localhost a]# egrep 'o{2}' /etc/passwd //不加脱义符号
[root@localhost a]# egrep 'o+' /etc/passwd //+表示左边的字符的重复一次或多次
[root@localhost a]# egrep 'oo?' /etc/passwd ?表示 左边的0 或者1个字符
[root@localhost a]# egrep 'root|nologin' /etc/passwd | 表示或
[root@localhost a]# egrep '(oo){1}' /etc/passwd