正则表达式--三剑客简单应用
1、正则表达式:
简单的说,正则表达式就是一套处理字符串的规则和方法,以行为单位对字符串进行处理,通过特殊的符号的辅助,我们可以快速的过滤,替换某些特定的字符串。
正则表达式可以快速的过滤出我们需要的内容。配合三剑客使用。
2、正则表达式实际就是一些特殊字符,赋予了他特定的含义。
(1)^word 搜索以word开头的
(2)word$ 搜索以word结尾的
(3). 代表且只能代表任意一个字符
. 具有的含义,代表当前目录、隐藏文件的标识、使一个配置文件生效。
(4)\ 转义
(5)* 表示重复0个或多个前面的一个字符。
(6).* 匹配所有字符(任意字符多个)
^.* 以任意字符开头的
(7)[] 括号里的内容都可以匹配
(8)[^word] 匹配不包含 ^后任意字符的内容
(9)\{n,m\} 重复 n 到 m 次,前一个重复的字符。如果用 egrep 可以去掉斜线。
\{,m\} 重复至多 m 次,前一个重复的字符。如果用 egrep 可以去掉斜线。
\{n,\} 重复至少 n 次,前一个重复的字符。如果用 egrep 可以去掉斜线。
\{n\} 重复 n 次,前一个重复的字符。如果用 egrep 可以去掉斜线。
需要对{}进行转义,所以在每个大括号前面加上 \
3、举例说明:
(1)过滤 M 开头的
(2)不区分大小写输出。 -i
(3)过滤以 m 结尾的,$ 放在后面。
(4)将带 . 的文件进行过滤输出并加行号显示。 -n 显示行号; . 匹配任意一个字符,需要用 \ 进行转义。
(5)过滤“49000448”号码,使用 * 进行0次或多次匹配。
* 将前面的0匹配了0次或多次。
(6)使用 [] 过滤。
[] 里的内容都可以匹配,匹配 l 或者 o,匹配到的是 blog 或 boog。
(7)匹配不带有 oldboy 任意一个字符的行;括号里的任意一个字符都匹配。
(8)使用分组的情况过滤 qq 号码;
对前面的 0 匹配 2-3 次。
对前面的 0 匹配至多 5 次。0 - 5 次
对前面的 0 匹配至少 3 次。
======================================================
扩展的正则表达式: egrep 或 grep -E
(1)+ 重复一个或一个以上前面的内容
(2)? 0个或一个前面的字符
匹配前面的字符 0 次或一次。
(3)| 用或的方式查找多个符合的字符串
查找文件下为有 3306 或 1521 的文件
(4)() 找出 “用户组” 字符串
查找带 lo 组或者 oo 组的内容
======================================================
4、awk 取IP地址:
grep 过滤出地址存在的行,用 awk 指定分隔符取 IP 地址。
awk 多个分隔符取 IP 地址,awk 多分隔符需要将分隔符用()括起来。
使用 = 和 > 作为分隔符,中间的内容就是要取的。
(1)取出文件的权限。
使用 awk 指定多分隔符的方法,将内容前后的分隔符指明。
5、sed 取IP地址:
使用 sed 将 IP 地址前后的内容替换成空,以。。开头,以。。结尾需要加上标识符 ^ $.
在前两个 # 号中写入的条件是:以任意字符开头到 inet 结尾,中间括号里的内容代表的是 IP 地址,后面加上 netmask 开头任意字符结尾。后两个 # 号中的内容 \1 代表的是输出第一个小括号里的内容,小括号表示分组,即输出前面括号里的内容,结尾加上 p 表示打印输出。
需要用反斜线对小括号进行转义。
前面小括号里表示任意字符,中间用空格分隔,后面接上任意字符,因为 a.txt 文件中只有一个空格,\1 表示输出第一个小括号中的内容, \2 表示输出第二个小括号中的内容。如果只输出第一个小括号中的内容也可以。
(1)sed 取文件的权限:
以任意字符开头到 ( ,分组内的内容表示任意字符,即要取得内容,后面跟上要取内容后面跟上剩下的部分,\1 取第一个分组的内容,p 打印输出。
======================================================
6、stat
stat -c 加参数可以查到文件权限的信息
%a 取八进制的权限
%A 人类可读的权限