正则表达式:
正则表达式就是一套处理字符串的规则和方法,以行为单位对字符串进行处理,通过特殊的符号的辅助,我们可以快速的过滤,替换某些特定的字符串。
linux里正则表达式。主要是awk,sed,grep(egrep)的正则表达式。
正则表达式实际就是一些特殊字符,赋予了他特定的含义。
1)^word 搜索以word开头的行。
grep “^word” yangfan.log ####过滤以word开头的内容
2)word$ 搜索以word结尾的。
grep “^word” yangfan.log
grep -i “^M” yangfan.log ######(-i)不区分大小写 过滤以M开头的字符
3). 代表且只能代表任意一个字符
grep “bl.g” yangfan.log
grep -n “.” yangfan.log 显示行号可以 . 号表示任意一个字符,-n 过
滤出的每一行加行号。
4)\ 转义符号,让有着特殊身份意义的字符,脱掉马甲,还原原形。
grep “.” yangfan.log 过滤包含点的字符串
5)* 例o* 重复0个或多个前面的一个字符。
grep “490.*448” yangfan.log
6).* 匹配所有字符
^.* 以任意多个字符开头
7)[] 字符集合的重复特殊字符的符号
grep “b[lo]og” yangfan.log ######组合blog或者是boog
8)[^word] 匹配不包含^后的任意字符的内容。
grep “[^qq]” yangfan.log
9)a{n,m} 重复n到m次,前一个重复的字符。 如果用egrep可以去掉斜线。
grep “490{2,10}448” yangfan.log
grep “490{,5}448” yangfan.log
{n,} 重复最少n次,前一个重复的字符。
{n} 重复n次,前一个重复的字符。
10)^$ 空白行
扩展的正则表达式:ERE
1)+ 表示一个或一个以上前面的字符
egrep “490+448” yangfan.log
grep -E “490+448” yangfan.log
2)? 重复0个或一个0前面的字符。
grep -E “490?448” yangfan.log
3) | 用或的方式查找多个符合的字符串
grep -E “3306|1521” /etc/services
4) () 找出“用户组”字符串
grep -E “b(lo|oo)g” yangfan.log
linux取出ip的几种方式
(1)cut方式:ifconfig eth1 | grep “inet addr” | cut -d “:” -f2 | cut -d ” ” -f1 #####取ip地址
(2)awk方式:ifconfig eth1 | grep “inet addr” | awk -F “:” ‘{print $2}’ |awk ‘{print $1}’
(3)多分隔符取ip地址(冒号和空格的集合):ifconfig eth1 | grep “inet addr” | awk -F “[: ]+” ‘{print $4}’
取行的三种方式
(1)sed方式过滤行:
ifconfig eth1 | sed -n ‘2p’ ############sed取第二行
ifconfig eth1 | sed -n ‘2p’ | awk -F “[: ]+” ‘{print $4}’
(2) awk取行方式:
ifconfig eth1 | awk -F “[: ]+” ‘NR==2 {print $4}’ ######以NR==2的方式取第二行
(3)grep取行方式:
ifconfig eth1 | grep “inet addr” | awk -F “:” ‘{print $2}’ | awk ‘{print $1}’