文本处理三剑客(一)

文本处理三剑客:grep,sed,awk

grep:文件过滤工具;

sed:stream editor 流编辑器;

awk:文本报告生成器;

正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表达控制或通本的功能;

1.基本正则表达式:BRE

2.扩展正则表达式:ERE

grep :文本搜索工具,根据用户指定的模式对目标文件逐行进行匹配检查,并打印匹配到的行;

grep -i 忽略字符大小写

grep -v 显示不能被匹配到的行

grep -E 支持扩展正则表达式

grep -A after 过滤显示后N行

grep -B before 过滤显示前N行

grep -C 过滤显示前后N行

基本正则表达式元字符

字符匹配

1.“.”匹配任意单个字符

# grep r..t /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
gentoo:x:1001:1001::/users/tentoo:/bin/bash

2.[]匹配任意范围内任意单个字符

#grep [Pp] /opt/fstab 过滤显示P或小p的行

3.[^]匹配指定范围之外的任意字符,非指定字符

例:[^abc] 任何字符,除了 a、b 或 c(否定)

#grep [^p] 非p字符之外的所有

 [[:digit:]]所有数字

[[:lower:]]所有小写字母

[[:upper:]]所有大写字母

[[:alpha:]]所有字母

[[:alnum:]]所有字母和数字

[[:space:]] 所有空白字符

[[:punct:]]所有标点符号

4.“*”匹配前面字符任意次数,可是0,1,多次;.*任意长度字符

#grep r*t *代表中间可以为任意多个个字符

5.\?匹配其前面字符0次或1次,即前面字符可有可无

6.\+匹配前面字符至少1次或多次

7.\{\m}匹配前面字符m次

8.\{m,n\}匹配前面字符至少m次,至多n次

9.\{0,n\}匹配前面字符至多n次

10.\{m,\}匹配前面字符至少m次

11.^行道锚定,用模式的最左侧;

12.$行尾锚定,用于模式的最右侧;

13.^$显示空白行

14.^PATTERN$ 用PATTERN匹配整行

#^[[:space:]]$空白行或包含空白字符

15.\<或\b 左词首,\>或\b右词首

16.\<PATTERN\>匹配完整单词

分组符号

\(\)将一个或多个字符捆绑在一起,当作一个整体进行处理

例:\(xy\)*ab

\1:  模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配的字符;
\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配的字符;
\3:模式从左侧起,第三个左括号以及与之匹配的右括号之间的模式所匹配的字符;

 

posted @ 2020-09-23 18:00  扬帆直上  阅读(187)  评论(0)    收藏  举报