正则表达式
一、概述
二、特殊字符
-
特殊字符列表
特殊字符 功能 使用 1 ^ 以指定字符串开头的行 ^a 以a开头的行 2 $ 以指定字符串结尾的行 sh$ 以sh结尾的行 3 . 匹配一个任意字符 r…t 匹配r和t中间有两个字符的内容 4 * 匹配上一个字符0次或多次 ro*t 匹配r和t之间有任意个o,包括没有o 5 [ ] 匹配某个范围内的一个字符 [6,8]:匹配 6 或者 8
[0-9]:匹配 0 到 9 的数字
[a-z,0-9]:匹配a到z,0-9的任意字符6 \ 转义字符,且必须用单引号引起 ‘\ ′ ' ′:以$结尾 -
组合使用
组合特殊字符 功能 使用 1 ^$ 匹配空行 cat add.sh | grep -n ^$ 可以查看所有空行的行号 2 .* 匹配任意字符串 ^a.*bash$ 匹配以a开头,bash结尾的所有行 3 [0-9]{9} 重复匹配指定次数 echo “13988997788” | grep -E ^1[345789] [0-9]{9}$
三、文本处理工具 - cut
-
作用
在文件中负责剪切数据。cut命令从文件的每一行剪切字节、字符和字段,并将这些字节、字符和字段输出。
-
基本语法
cut 选项参数 filename
选项参数 功能 1 -f 列号,提取第几列 2 -d 分隔符,按照指定分隔符分割列,默认是制表符 3 -c 按字符进行切割 后加n调试取第几列 -
举例
-
注意
列是以分隔符来确定的,不是传统意义上的列
四、文本处理工具 - awk
-
作用
强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理
-
基本语法
awk 选项参数 ’/pattern1/{action1} /pattern2/{action2} …‘ filename
pattern:表示awk在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
选项参数 功能 1 -F 指定输入文件分隔符 2 -v 赋值一个用户定义变量 -
action 扩展
action的代码块 功能举例 1 {print $7}
要剪切第7列,只需要 $7就可以了awk -F “:” ‘/^root/ {print $1","$7}’
剪切了1和7列2 ’BEGIN{print “前置字符串”}{ }END{print “后置字符串”}‘ 在结果前后增加不同的字符串 3 -
awk的内置变量
内置变量 说明 1 FILENAME 文件名 2 NR 已读的记录数(行号) 3 NF 浏览记录的域的个数(切割后,列的个数) 示例
awk -F ":" '{print "文件名" FILENAME"行号:" NR "列数" NF }' /etc/passwd
-
使用举例
① 查询ifconfig命令输出结果中的空行所在的行号
② 切割IP
五、小结
- grep是对行的筛选;cut是对列的筛选
- awk融合了对行和列的筛选
- grep / cut / awk 都可以使用在通道符后