Centos7Shell编程之正则表达式文本处理工具详解 |
||||||||||||||||||||||||||
目录
1. 正则表达式正则表达式可以很灵活的提供各种模糊匹配的筛选规则。常被用来检索、替换那些符合某个模式的文本。grep、sed、awk等文本处理工具都支持通过正则表达式进行模式匹配
1.1 常规匹配一串不包含特殊字符的正则表达式,匹配包含它自己的字符,例如:
?
1.2 常用特殊字符特殊字符:^:匹配一行的开头,例如:
?
特殊字符:$:匹配一行的结束,例如:
?
?
特殊字符:*:不单独使用,和上一个字符连用,表示匹配上一个字符0次或多次,例如
?
字符区间:[ ]:表示匹配某个范围内的一个字符
?
**特殊字符:**:表示转义,并不会单独使用。由于所有特殊字符都有其特定匹配模式,当我们想匹配某一特殊字符本身时(例如我想找出所有包含’$的行),就会碰到困难。此时我们就要将转义字符和特殊字符连用,来表示特殊字符本身,例如:
?
实战练习:
?
grep默认是不支持正则特殊字符{}的,需要开启拓展正则表达式功能
2. 文本处理工具
2.1 cutcut可以将文件中内容(也可以通过管道符传输),按照指定分隔符将每一行进行切割,然后取指定字节、字符、字段进行输出 基本语法: cut [选项参数] filename 选项参数如下: -d 分隔符:按照指定分隔符分割每行数据,默认是制表符\t -f 列号:取第几列。可以使用 -c 字符号:表示取第个字符。不能指定分隔符 -b 字节号:表示取第个字节。不能指定分隔符 示例:
?
实战示例:
?
2.2 awkawk把文件逐行的读入(文件名或通过管道符传输),以空格为默认分隔符将每行切片,切开的部分再进行分析处理 基本语法:awk [选项参数] ‘/pattern1/{action1} /pattern2/{action2} …’ filename
选项参数说明
awk的内置变量 FILENAME:文件名NR:数据所在的行号NF:每行切割后的列数 示例1:
?
示例2:
?
前面的多个空格会当作一个空格,且只统计有内容的列所在的位置 示例3:
?
|