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