您的位置:首页 > 其它

正则表达式及grep、sed、awk、cut、sort、uniq工具

2017-07-04 23:00 1076 查看
1.正则表达式

(1)定义:规定一些特殊语法用来对字符串进行模糊匹配;

(2)特点:

①灵活性、逻辑性和功能性较强;

②可以迅速地用简单的方式匹配字符串;

(3)使用事项:当正则表达式作为命令参数时,要用单引号括起来,因为正则表达式中的某些字符在shell中有特殊意义,如转义字符\,括起来后把原封不动地传递给命令。

2.字符的分类

(1)字符类



(2)数量限定符



(3)位置限定符



(4)其他字符



3.grep工具

grep:行过滤工具,会将文本中符合条件的行直接提取出来,它支持正则表达式。

命令选项:

-E 表示扩展正则语法,某些字符表示特殊含义时,不需要进行转义,也可以直接使用egrep;

-i 忽略大小写

-R 递归式查找

-v 显示不符合条件的行

-q 安静模式匹配,无论是否匹配到都不显示,可以根据退出码判断是否匹配到;

4.标准正则语法和扩展正则语法的区别

标准正则语法和扩展正则语法的大部分规则相同,但对于一些有特殊含义的字符,如? + { } | ( )标准正则语法会将这些字符解释为普通字符,使用正则表达式时,必须对这些字符加 \ 进行转义

5.grep和正则表达式结合的例子

给出一个file文件,包含一些与QQ邮箱,电话号码,IP地址,163邮箱类似的字符串,如图所示:



按要求进行匹配,并使用- -color进行高亮显示

(1)匹配出QQ邮箱



(2)匹配出电话号码



(3)匹配
c1e6
出ip地址



(4)匹配出163邮箱



6.sed工具

sed:流式编辑器

(1) 命令格式: sed ‘/pattern/action’ file

pattern表示每读取一行进行正则匹配

action表示进行相应的动作,命令

(2)命令选项

-i 将处理结果写入原文件

-n 只显示匹配的结果

-e 对模式空间的一行内容一次应用多种规则、动作

(3)action的命令选项

/pattern/p 打印匹配的行

/pattern/d 删除匹配的行

/pattern/s/p1/p2/ 查找符合条件的行,用p2替换该行第一个匹配p1的字符串

/pattern/s/p1/p2/g 查找符合条件的行,用p2替换该行所有匹配p1的字符串

(4)例子:

①注释文件中以printf开头的行



②去掉printf前的注释



③在file文件中以a2开头并且后面只有2的字符串中,将2替换为~2~



(5)sed的模式空间和保持空间

模式空间:数据可以直接处理;

保持空间:在进行数据处理时,作为数据的暂存区域;

一般情况下,只使用模式空间,对数据的加工处理只能在模式空间,而保持空间只是保存数据,不做任何处理;

命令:

g :将保持空间的内容拷贝至模式空间;

G:将保持空间的内容追加至模式空间;

h :将模式空间的内容拷贝至保持空间;

h :将模式空间的内容追加至保持空间;

d :删除所有行,并读入下一行到模式空间

D :删除当前行,不读入下一行

x :交换保持空间和模式空间的内容

n :将下一行读取到模式空间

N:将下一行添加到模式空间

举例:

①打印1~100相加之和



②给每行结尾添加空行显示



③逆序打印文件



④在一个文件结尾追加以hello开头的所有行



⑤将一列数转换为一行数显示



⑥打印奇偶数行



7.awk工具

(1)

awk可通过指定列或指定域处理数据;

awk将一行内容称为一条记录,将用指定分隔符分隔的列称为域;

awk一般以空格作为域分隔符,以\n作为记录分隔符;

awk也可以使用BEGIN和END进行匹配;

(2) 命令格式:

awk ‘/pattern/{action}’ file

awk ‘condition{action}’ file

(3)命令参数:

$0:表示当前整个行

$1:表示第一列 $2:表示第二列

$NF:最后一列 $(NF-1) :倒数第二列

(4)例子:

①打印file4文件中的第二列



②打印以productA开头的行的第二列



③产品价格大于50时,打印产品名和YES,产品价格小于50时,打印产品名和NO:






⑤计算1~100相加之和



(5)awk脚本

脚本第一行#!usr/bin/bah -f

①执行脚本

./test.awk file

②若脚本第一行没有写-f,执行时应该为awk -f test.awk file

(6)awk内置变量

OFS:输出域分隔符

FS:设置输出域分隔符

(7)-F 指明域分隔符



8.cut工具

切割数据









9.sort工具

sort file 按升序输出

sort -r file 按降序输出

sort -u file 去掉重复的行

sort -r file -o file 将降序排好的文件写会原文件

sort -n file 将字符按数值排序,默认升序

sort -k 2 file 将第二列进行排序

10.uniq工具

sort file | uniq 去掉重复的行

sort file | uniq -c 去掉重复的行并显示重复次数

sort file | uniq -u 显示出现一次的行

sort file | uniq -d 显示出现多次的行

例子:行转换为列显示,去掉重复的行,显示重复次数,并且按升序打印

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: