正则表达式
是一种通过符号和字符串进行匹配规则的,对文件内容的查询结果进行影响。
正则表达式是由普通字符和元字符构成
常用正则:grep、sed、awk、pgrep、mkdir、touch……
touch a{1…100}.txt
[root@lala ~]# ifconfig ens33 | grep "inet 192.168.6.20 " | awk ‘{print $5}’
broadcast
grep组合正则表达式的用法 (如果你没有路径和目录就自己找个)
grep -n “ServerName” /usr/local/httpd/conf/httpd.conf
n:显示行号,查询的指定字符串在文件中所在的行号
grep -in “ServerName” /usr/local/httpd/conf/httpd.conf
i:显示内容不区分大小写
grep -vn “ServerName” /usr/local/httpd/conf/httpd.conf
v:反向查询,显示不包含指定字符串的行
grep -in “Server[Nn][avty]me” /usr/local/httpd/conf/httpd.conf
[ ] :匹配[ ]中任意字符,or的意思
grep -n “1” /usr/local/httpd/conf/httpd.conf
^ :以指定的字符或字符串开头
grep -n “.$” /usr/local/httpd/conf/httpd.conf
$ :以指定的字符或字符串结尾
注意:如果结尾为.则需要加转义符。因为.在 正则表达式中也是一个元字符,所以需要用转义符\将具有特殊意义的字符转化成普通字符
grep -n “htmlKaTeX parse error: Expected group after '^' at position 46: …conf grep -n "^̲” /usr/local/httpd/conf/httpd.conf
^$ :显示空行
grep -n “[A-Z]” /usr/local/httpd/conf/httpd.conf
[A-Z] :连续范围的数字或字母
基础正则表达式
grep -n ‘[^w]oo’ test.txt
查找“oo”前不是“w”的字符串
grep -n ‘wo{1,3}d’ test.txt o{1,3}
查询包含1-3个o的字符串
{ } :之前的字符重复出现指定单位数量,{ } 需要加转义符
grep -n ‘o{2}’ test.txt o{2}
正则中的通配符:
. 代替一个字符,可以连续使用,不能代表空值
-
代替一组字符,可以为空
.* 至少存在一个字符
例:wo.*k wook work woak 绝对不能是wok
grep ‘r…o’ /etc/passwd
查询r和o中间有2个字符的,空格算一个字符
o换成a,在查询“oo o*”中,必须以oo成对出现的,而在查询“ooo o*”,必须以ooo成对出现
如果是“o o*”,则第一个o必须存在,第二个o是零个或者多个,所以包含o、oo、ooo、oooo、……
若查询“oo o*”,查询两个o以上的字符串。搜索关键字是两a。包含oo、ooo、oooo、……
若查询“ooo o*”,查询三个o以上的字符串。包含ooo、oooo、……
grep -n ‘ooo*’ /etc/passwd(路径)
查询两个o以上的字符串
grep -n ‘.*’ /etc/passwd (路径)
所有都出现
扩展正则表达式
egrep -n ‘woo+d’ test.txt
- :筛选一个或一个以上字符
egrep -n ‘ooo?’ test.txt
? 查询?前一个有或没有的字符
egrep -n ‘o?’ test.txt
查询没有或有一个以上o的字符串
egrep -n ‘oo?’ test.txt
查询一个或有一个以上o的字符串
egrep -n ‘ooo?’ test.txt
查询两个或有两个以上o的字符串
Ss ↩︎