- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
shell入门到经典 ch05
第5章 文件的合并、排序和分割
南京财经大学 江苏省电子商务重点实验室
伍之昂 王有权
提纲
sort命令
uniq命令
join命令
cut命令
paste命令
split命令
tr命令
tar命令
sort 命令(1)
Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常用的文件排序工具;
sort命令与awk一样,将文件看作记录和域进行处理,默认的域分隔符是空格符,sort命令的格式为:
sort [选项] [输入文件]
选项
意义
-c
测试文件是否已经被排序
-k
指定排序的域
-m
合并两个已排序的文件
-n
根据数字大小进行排序
-o [输出文件]
将输出写到指定的文件,相当于将输出重定向到指定文件
-r
将排序结果逆向
-t
改变域分隔符
-u
去除结果中的重复行
sort 命令(2)
-t选项可用于设置分隔符
例5-1
-k选项用于指定排序的域,sort默认按第1域进行排序
例5-2
-n选项用于指定按数值大小进行排序
例5-3
-r选项用于将排序结果逆向显示
例5-4
-u选项用于去除排序结果中的重复行
例5-5
sort 命令(3)
-o选项用于指定结果文件的名字
例5-6
-c选项用于测试文件是否已经排好序
例5-7
-m选项用于将两个排好序的文件合并成一个排好序的文件,在文件合并前,它们必须已经排好序,-m选项对未排序的文件合并是没有任何意义
例5-8
uniq 命令(1)
uniq命令用于去除文本文件中的重复行,这类似于sort命令的-u选项
sort -u命令时,所有重复记录都被去掉
uniq命令去除的重复行必须是连续重复出现的行,中间不能夹杂任何其他文本行
选项
意义
-c
打印每行在文本中重复出现的次数
-d
只显示有重复的记录,每个重复记录只出现一次
-u
只显示没有重复的记录
uniq 命令(2)
uniq命令的-c选项打印每行在文本中重复出现的次数,常用于计数功能,-c选项是uniq最有用的选项
例5-11
count_word.sh脚本
uniq命令的-d和-u选项正好相反,-d选项用于显示有重复的记录,而-u选项显示没有重复的记录
join 命令(1)
join命令用于实现两个文件中记录的连接操作,连接操作将两个文件中具有相同域的记录选择出来,再将这些记录所有的域放到一行(包含来自两个文件的所有域)
join [选项] 文件1 文件2
例5-13
选项
意义
-a1或-a2
除了显示以共同域进行连接的结果外,-a1表示还显示第1个文件中没有共同域的记录,-a2则表示显示第2个文件中没有共同域的记录
-i
比较域内容时,忽略大小写差异
-o
设置结果显示的格式
-t
改变域分隔符
-v1或-v2
跟-a选项类似,但是,不显示以共同域进行连接的结果
-1和-2
-1用于设置文件1用于连接的域,-2用于设置文件2用于连接的域
join 命令(2)
当两个文件进行连接时,文件1中的记录可能在文件2中找不到共同域,反过来,文件2中也可能存在这样的记录,join命令的结果默认是不显示这些未进行连接的记录的
-a和-v选项就是用于显示这些未进行连接的记录,-a1和-v1指显示文件1中的未连接记录,而-a2和-v2指显示文件2中的未连接记录
-a和-v选项的区别在于:-a选项显示以共同域进行连接的结果,而-v选项则不显示这些记录
例5-14
例5-15
join 命令(3)
join命令默认显示连接记录在两个文件中的所有域,而且是按顺序来显示的。-o选项用于改变结果显示的格式
例5-16
join命令默认比较文件1和文件2的第1域,如果我们需要通过其他域进行连接,就需要使用-1和-2选项,-1用于设置文件1用于连接的域,-2用于设置文件2用于连接的域
文件1和文件2必须已经根据所要进行连接的域排序
例5-17
cut 命令
cut命令用于从标准输入或文本文件中按域或行提取文本
cut [选项] 文件
例5-19
例5-20
选项
意义
-c
指定提取的字符数,或字符范围
-f
指定提取的域数,或域范围
-d
改变域分隔符
paste 命令(1)
paste命令用于将文本文件或标准输出中的内容粘贴到新的文件,它可以将来自于不同文件的数据粘贴到一起,形成新的文件
paste [选项] 文件1 文件2
-d选项 例5-22
-s选项 例5-23
选项
意义
-d
默认域分隔符是空格或Tab键,设置新的域分隔符
-s
将每个文件粘贴成一行
-
从标准输入中读取数据
paste 命令(2)
paste命令的“-”选项比较特殊,当paste命令从标准输入中读取数据时,“-”选项才起作用
例5-24:paste命令-选项的用法
[root@jsel
文档评论(0)