Linux文本处理三剑客
-
grep:文本过滤(模式:psttern)工具
grep,egrep,fgrep (不支持正则表达式搜索)
-
sed:stream editor,文本编辑工具
-
awk:Linux上的实现gawk,文本报告生成器
下面就先谈一谈:grep及正则表达式;egrep及扩展的正则表达式
grep
-
grep:Goobal search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行
模式:用正则表达式字符及文本字符所编写的过滤条件
grep命令选项
- –color=auto: 对匹配到的文本着色显示
- -v: 显示不被pattern匹配到的行
- -i: 忽略字符大小写
- -n:显示匹配的行号
- -c: 统计匹配的行数
- -o: 仅显示匹配到的字符串
- -q: 静默模式,不输出任何信息
- -A #: after, 后#行
- -B #: before, 前#行
- -C #:context, 前后各#行
- -e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file
- -w:匹配整个单词
- -E:使用ERE
- -F:相当于fgrep,不支持正则表达式
正则表达式
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能
基本正则表达式元字符
| 元字符 | 定义 |
|---|---|
| ^ | 位置锚定:行首 |
| $ | 位置锚定:行尾 |
| . | 任意单一字符 |
| [ ] | [ ]内任意单一字符 |
| [^] | 除[ ]内任意单一字符 |
| * | *前面字符重复不确定次数 |
| + | +前面字符重复一次以上不确定次数 |
| ? | ?前面字符重复0或1次 |
| \ | 转义符 |
| .* | 任意长度字符 |
| {n} | 前面字符重复n次 |
| {n,} | 前面字符重复n次以上 |
| {m,n} | 前面字符重复m次和n次之间 |
| [:alnum:] | 字母和数字 |
| [:alpha:] | 代表任何英文大小写字符,亦即A-Z,a-z |
| [:lower:] | 小写字母 |
| [:upper:] | 大写字母 |
| [:blank:] | 水平空白字符(空格和制表符) |
| [:space:] | 所有水平和垂直的空白字符(比[:blank:]包含的范围广) |
| [:cntrl:] | 不可打印的控制字符(退格,删除,警铃…) |
| [:digit:] | 十进制数字 |
| [:graph:] | 可打印的非空白字符 |
| [:print:] | 可打印字符 |
| [:punct:] | 标点符号 |
| [:xdigit:] | 十六进制数字 |
egrep
- egrep = grep -E
- egrep [OPTIONS] PATTERN [FILE…]
扩展的正则表达式的元字符
| 元字符 | 定义 |
|---|---|
| . | 任意单个字符 |
| [ ] | 指定范围的字符 |
| [^] | 不在指定范围的字符 |
| * | 匹配前面字符任意次 |
| ? | 0或1次 |
| + | 1次或多次 |
| {m} | 匹配m次 |
| {m,n} | 匹配至少m次,之多n次 |
| ^ | 位置锚定:行首 |
| $ | 位置锚定:行尾 |
| <,\b | 位置锚定:词首 |
| >,\b | 位置锚定:词尾 |
| ( ) | 分组 |
| \1,\2 | 后向引用 |
学之前是拒绝的,学之后是懵逼的。
原创文章,作者:XIAJIDONG,如若转载,请注明出处:http://www.178linux.com/72678


评论列表(1条)
详细介绍了正则表达式的知识点,内容写的很不错,排版也很好