正则表达式:
就是为了处理大量的字符串而定义的一套规则和方法,一般以行为单位处理。
^word 匹配以word开头的内容,,vi/vim编辑器里面^代表一行的开头
word$匹配以word结尾的内容,vi/vim里面$代表一行的结尾
^$ 表示空行
. 代表且只能代表任意一行一个字符
\ 转义字符.
* 重读0个或者多个前面的一个字符,例如o* 匹配没有o 有一个o或者多个ooo
.* 匹配所有字符。.* 以任意多个字符开头,.*$以任意多个字符结尾。
[abc] 匹配字符集内任意一个字符,[a-z,A-Z],[0~9]
[^a-z] 匹配不包含^后的任意一个字符的内容,中括号的^为取反。
a\{n,m\} 重复n到m次,前一个重复的字符,如果用egrep/sed -r可以去掉斜线。
a\{n,\} 重复至少n次,前一个重复的字符,如果用egrep/sed -r可以去掉斜线
a\{n\ }重复n次,前一个重复的字符,如果用egrep/sed -r可以去掉斜线
需要使用双引号。
Linux正则表达式结合grep、sed 、
例如:
取网卡的IP地址
ifconfig
ifconfig enp0s5
打印IP地址,
处理技巧:
匹配需要的目标,(获取的字符串如ip)前的字符串一般用..开头(^.*)来匹配开头,匹配的借口写上实际的字符。
而处理需要的目标后的内容,一般是在匹配的开头写上实际的字符,而结尾是用…结尾,(.*$)来匹配。
ifconfig enp0s5 | sed -n '2p'
ifconfig enp0s5 | sed -n '2p'| sed 's#^.*dr:##g'
ifconfig enp0s5 | sed -n '2p'| sed 's#^.*dr:##g'|sed ’s# B.*$##g'
ifconfig enp0s5 | sed -nr ’s#^.*dr:(.*) B.*$#\1#gp’
Awk的读取ifconfig的ip地址
ifconfig enp0s5 |awk -F “[ :]+” ’NR=2 {print $4}’
对调passwd里面的前第一列和最后一列
sed -nr ’s#([^:]+)(:.*)(/.*$)#\3\2\1#’ /etc/passed
cat /tmp/dhcp.leases | awk '{print $2}’
root@lxf:~# cat /tmp/dhcp.leases | awk '{print $2}'
c8:c2:fa:75:dc:2a
70:81:eb:38:d6:30
f0:18:98:35:53:68