Linux:grep进阶(11)

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》_shell grep 全角字符串-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/132338954?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170833601716800226594687%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170833601716800226594687&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-132338954-null-null.nonecase&utm_term=grep&spm=1018.2226.3001.4450这个是grep的基础使用,本章则搭配着正则表达式之上再加更多的参数进行演示


基础正则表达式

^word   搜索以word开头的。vi/vim中 ^ 一行的开头。

word$   搜索以word结尾的。vi/vim中 $ 一行的结尾。 \$

^$      表示空行

 .   代表且只能代表任意一个字符

 \       例:\. 只代表点本身,转义符号,让有特殊身份意义的字符,脱掉马甲,还原;

\n  换行符

\r  匹配回车

\w  匹配任意一个字符和数字

*       重复0次或多次前面的一个字符。

*      匹配所有字符。例:^.* 以任意多个字符开头,.*$以任意多个字符结尾。

[abc]    匹配字符集内的任意一个字符。

 [^abc]   匹配不包含 ^ 后的任意字符的内容。中括号里的 ^ 为取反。

 [1-9]    表示匹配括号内的范围内的任意字符。

a\{n,m\}  重复n到m次前一个重复的字符。若用egrep、sed -r可以去掉斜线。

\{n,\}    重复至少n 次前一个重复的字符。若用egrep、sed -r可以去掉斜线。

\{n\}     重复n 次前一个重复的字符。若用egrep、sed -r可以去掉斜线。

\{,m}\    重复少于m次。


扩展的正则表达式:

    +   重复一次或一次以上前面的一个字符。等同于\{n,}

    ?   重复0次或一次前面的一个字符。等同于\{,m}

    |   或者的意思,用或的方式查找多个符合的字符串。

    ()   找出括号内的字符串。

理解正则

^linux                       ##以linux开始

linux$                       ##以linux结束

linuxfan.                    ##匹配linuxfans等

coo[kl]                      ##匹配cool或cook

9[^5689]                     ##匹配91,92等,但不匹配95,98等

[0-9]                          ##匹配任意一个所有的数字

[a-z]|[A-Z]               ##匹配任意一个所有大小写字母,|属于扩展正则grep -E支持

colou?r                      ##匹配color或colour,但是不能匹配colouur

rollno-9+                 ##匹配rollno-9、rollno-99,rollno-999,但不匹配rollno-

co*l                           ##匹配cl,col,cool,coool等

ma(tri)x                    ##匹配matrix

[0-9]{3}                    ##匹配任意一个三位数,等于[0-9][0-9][0-9]

[0-9]{2,}                     ##匹配任意一个两位数或更多位的数字

[0-9]{2,5}                  ##匹配从两位数到五位数之间的任意一个数字

Oct (1st|2nd)            ##匹配Oct 1st或Oct 2nd

a\.b                            ##匹配a.b,但不能匹配ajb

[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}                             ##匹配一个邮箱地址 

[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}            ##匹配IP地址 


 grep常用的参数

Linux:grep进阶(11)_第1张图片


 grep用法演示

cat /etc/passwd | grep -e root -e tarro -e ftp

# 查询/etc/passwd  多个字符串  -e 后面就是一个指定的字符串可以指定多个

Linux:grep进阶(11)_第2张图片

grep -R -o -n -E '[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}' /etc/

目录下的所有文件中的邮件地址

-R递归,-n表示匹配的行号,-o只输出匹配内容,-E支持扩展正则表达式

grep -R -c 'HOSTNAME' /etc/ |grep -v "0$"

查找/etc/目录下文件中包含“HOSTNAME”的次数,-c统计匹配次数,-v取反

 grep -R -l 'HOSTNAME' /etc/ 

查找包含“HOSTNAME”的文件名,-l显示匹配的文件名,-L显示不匹配的文件名

cat /etc/passwd |grep -c bash$

统计系统中能登录的用户的个数,以bash结尾的个数        

ip a |grep -E '^[0-9]' |awk -F : '{print^C2}'

 获取系统中网卡名称

ip a |grep mtu|grep -o -E "[a-z]{3}[0-9]{1,}"

也是获取系统中网卡名称        

ifconfig ens33 |grep -E -o 'inet [^ ]*' |grep  -o '[0-9.]*'

获取指定网卡的ip地址        

ip a |grep inet |grep ens33 |grep -o "inet[^/]*" |grep -o "[0-9.]*"

获取指定网卡的ip        

ifconfig ens33 |grep -i ether |awk '{print $2}'

截取指定网卡的mac地址

cat 123 | grep -A 3 5

查找指定字符串并且连续显示向下3行

Linux:grep进阶(11)_第3张图片

cat 123 | grep -B 3 5

查找指定字符串并且连续显示向上3行

Linux:grep进阶(11)_第4张图片

你可能感兴趣的:(linux,mysql,运维)