linux基础学习第七天-正则表达式及grep

2016-08-04

授课内容:

各种文本工具来查看、分析、统计文本文件(more、less、cat、cut、sort、wc、uniq、head、tail、paste、diff)

grep

正则表达式

扩展正则表达式

【】所有的文本查看、分析、统计等都是只是更改标准输出的显示方式,对原文件内容并没有更改

cat [OPTION]… [FILE]…:文件查看,接受标准输入

-n:显示行号

-E:显示结尾符

-A:显示所有控制符

more [OPTIONS…] FILE…:分页查看

[root@Centos7 ~]# more f1 f2 f3
::::::::::::::
f1
::::::::::::::
nihaoma
nizainali
cahifanlema
ddassada
::::::::::::::
f2
::::::::::::::
nihaoma
ni1zainali
cahifanlema
ddass2ada
::::::::::::::
f3
::::::::::::::
dsdasdasda
dsad
adada
asdsa

less FILE…:分页查看,man帮助调用的就是less命令查看内容

【】 当打开多个文件时,使用如下命令在多个文件之间切换

:n – 浏览下一个文件

:p – 浏览前一个文件

more和less的区别:

 两者都是文件查看命令,前者查看只能往后翻页,并且看完后自动退出,后者可按n/N进行前后页翻滚查看,同时支持搜索,看完后不会自动退出文件,需要按q退出

head [OPTION]… [FILE]…

-n#:查看文件的前#行内容

tail [OPTION]… [FILE]…

-n#:查看文件的倒数#行内容

-f: 实时跟踪显示文件新追加的内容,常用日志监控

cut [OPTION]… [FILE]…

-d:后面跟指定分隔符,默认是tab

-f :后面是指定的列

-c :按字符切割

paste [OPTION]… [FILE]…:合并【多个】文件同行号的列到一行显示,cat可以合并两个文件连续行显示

-d:指定合并后显示的分隔符

[root@Centos7 ~]# paste f1 f2
nihaomahenhao
nizainalizheli
chifanlemachile
[root@Centos7 ~]# paste -d* f1 f2
nihaoma*henhao
nizainali*zheli
chifanlema*chile
[root@Centos7 ~]# paste -d : f1 f2 f3
nihaoma:nihaoma:dsdasdasda
nizainali:ni1zainali:dsad
cahifanlema:cahifanlema:adada
ddassada:ddass2ada:asdsa

wc [OPTION]… [FILE]…:统计文件信息

-l:统计行数

-c:统计字节总数

-w:统计单词总数

sort [OPTION]… [FILE]…:对文本信息进行排序显示

-n:以数字大小进行排序

-r:反向显示

-t:分隔符(相当于cut的-d选项)

-k:第几列信息进行整理

uniq [OPTION]… [FILE]…:从输入中删除重复的前后相接的行

-c:重复行出现的次数

-d:仅显示重复的行

常和sort 命令一起配合使用,统计相同行出现的次数:

sort userlist.txt | uniq-c

diff [OPTION]… FILES:比较【两个】文件的不同之处

[root@Centos7 ~]# cat -n f1 f2
 1nihaoma
 2nizainali
 3cahifanlema
 4ddassada
 5nihaoma
 6ni1zainali
 7cahifanlema
 8ddass2ada
[root@Centos7 ~]# diff f1 f2
2c2
< nizainali
---
> ni1zainali
4c4
< ddassada
---
> ddass2ada
第2,4行有区别(改变)

正则表达式:由一类【特殊字符】及文本【字符】所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

字符分类:字符匹配、次数匹配、位置锚定、分组

基本正则表达式:

字符匹配:

.:表示任意的【一个字符】

[]:表示匹配中括号内的【任意单个】字符

[^]:表示匹配中括号外的【任意单个】字符

次数匹配:

*:表示【其前字符】的任意次数

.*:表示任意长度的任意字符,相当于通配符的*

\?:表示匹配【其前字符】一次或零次(可有可无)

\+:表示【其前字符】出现至少一次

\{m\}:表示【其前字符】出现m次

\{m,n\}:表示【其前字符】出现至少m次,最多n次

位置锚定:

^:表示其后的字符位于行首

$:表示其前的字符位于行尾

\<或\b:词首锚定,用于单词模式的左侧

\>或\b:词尾锚定;用于单词模式的右侧

分组:

\(spring\): 将搜索括号内的整个字符串

\1,\2,\3..:表示引用前面【第1,2,3..括号】搜索到的第一个字符【这是分组的意义所在,就是为了引用前面搜到的字符串,如果不需要引用,和没括号的结果一样】

[root@Centos7 ~]# grep -n "\(l..e\)" f1
1:He love his lover.
2:She like her liker.
3:He like his lover.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.
[root@Centos7 ~]# grep -n "l..e" f1
1:He love his lover.
2:She like her liker.
3:He like his lover.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.
[root@Centos7 ~]# grep -n "\(l..e\).*\1" f1
1:He love his lover.
2:She like her liker.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.

扩展正则表达式:

字符匹配(和基本正则表达式一样):

.

[]

[^]

次数匹配(与基本正则表达式相比少了“\”):

*

+

{m}

{m,n}

位置锚定(与基本正则表达式一样):

^

$

\< \b

\> \b 

分组(与基本正则表达式相比少了“\”)

(spring)

或(基本正则表达式没有这功能)

C|cat:表示C、cat

(C|c)at :表示Cat、cat

grep [OPTIONS] PATTERN [FILE…]:使用基本正则表达式定义的模式来过滤文本的命令

-i:忽略大小写搜索

-o:只显示搜索到的内容

-v:不显示搜索到的内容 

-n:显示行号

-E:以扩展正则表达式定义的模式搜索 

-A #:把匹配到的行以及其后#行内容一同显示

-B #:把匹配到的行以及其前#行内容一同显示

-C #:把匹配到的行以及其前后#行内容一同显示

-e:实现多个选项间的逻辑or关系【相当于扩展正则表达式的‘|’】

[root@Centos7 ~]# grep -En "l(ove|ike)" f1
1:He love his lover.
2:She like her liker.
3:He like his lover.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.
[root@Centos7 ~]# grep -e 'like' -e 'love' f1
He love his lover.
She like her liker.
He like his lover.
He love his lover and liker.
She like her liker and liker.
He like his lover and like.

原创文章,作者:麦德良,如若转载,请注明出处:http://www.178linux.com/30449

(0)
麦德良麦德良
上一篇 2016-08-07 22:05
下一篇 2016-08-07 22:05

相关推荐

  • CentOS 7网络属性配置

    传统命名:以太网eth[0,1,2,…], wlan[0,1,2,…] 可预测功能 udev支持多种不同的命名方案: Firmware, 拓扑结构 (1) 网卡命名机制 systemd对网络设备的命名方式: (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1; (b)…

    Linux干货 2015-05-28
  • nmcli命令使用,解析性能监控工具

    nmcli nmcli地址配置工具,NetworkManager client 网络管理客户端 相关命令:nmcli connection show        查看当前连接状态 nmcli connection reload      重启服务 nmcli connection sho…

    Linux干货 2016-09-07
  • 脚本数组及yum软件包管理器

    一、数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合。 数组名和索引索引:编号从0开始,属于数值索引注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持。bash的数组支持稀疏格式(索引不连续) 1.定义数组声明数组:    declare …

    Linux干货 2016-08-25
  • 运维必备技能之磁盘管理

    磁盘分区的三个工具 1、fdisk交互式工具         fdisk /dev/sdb进入交互界面         交互式界面的几个常用命令        …

    Linux干货 2017-03-14
  • find 和 压缩工具

    find命令 一、find命令基本介绍 1、find作用 通过遍历指定路径实时查找符合条件的文件。 find工作特点 2、find工作特点 查找速度较慢 精确查找 实时查找 用户只能搜索有读取和执行权限的目录 3、语法 find [OPTIONS]… [查找路径] [查找条件] [处理方式] 查找路径:指定…

    Linux干货 2016-08-16
  • 关于文件系统备份、交换分区挂载等–中

    dd命令:convert and copy a file 用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=#:block size, 复制单元大小 count=#:复制多少个bs  of=file 写到所命名的文件而不是到标准…

    Linux干货 2016-08-29