shell中的通配符 熟悉grep、cut、sort等小工具和shell中的通配符的使用(中)

简介: shell中的通配符 熟悉grep、cut、sort等小工具和shell中的通配符的使用

3. sort工具

sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。


语法和选项

-u:去除重复行-r:降序排列,默认是升序-o : 将排序结果输出到文件中,类似重定向符号>-n:以数字排序,默认是按字符排序-t:分隔符-k:第N列-b:忽略前导空格。-R:随机排序,每次运行的结果均不同


举例说明


#sort-n-t: -k31.txt按照用户的uid进行升序排列#sort-nr-t: -k31.txt按照用户的uid进行降序排列#sort-n2.txt按照数字排序#sort-nu2.txt按照数字排序并且去重#sort-nr2.txt#sort-nru2.txt#sort-nru2.txt#sort-n2.txt-o3.txt按照数字排序并将结果重定向到文件#sort-R2.txt#sort-u2.txt


##4.uniq工具


uniq用于去除**连续的重复**行


常见选项:-i: 忽略大小写-c: 统计重复行次数-d:只显示重复行举例说明:#uniq2.txt#uniq-d2.txt#uniq-dc2.txt


5.tee工具

tee工具是从标准输入读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出|文本输入)


选项:-a双向追加重定向#echohelloworld#echohelloworld|teefile1#catfile1#echo999|tee-afile1#catfile1


6.diff工具

diff工具用于逐行比较文件的不同


注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。


语法和选项

语法:


diff [选项] 文件1文件2


常用选项:


选项 含义 备注
-b 不检查空格
-B 不检查空白行
-i 不检查大小写
-w 忽略所有的空格
–normal 正常格式显示(默认)
-c 上下文格式显示
-u 合并格式显示



举例说明:


比较两个普通文件异同,文件准备:

[root@MissHou~]#catfile1aaaa111helloworld222333bbb[root@MissHou~]#[root@MissHou~]#catfile2aaahello111222bbb333world



1)正常显示


diff目的:file1如何改变才能和file2匹配[root@MissHou~]#difffile1file21c1,2第一个文件的第1行需要改变(c=change)才能和第二个文件的第1到2行匹配<aaaa小于号"<"表示左边文件(file1)文件内容------表示分隔符>aaa大于号">"表示右边文件(file2)文件内容>hello3d3第一个文件的第3行删除(d=delete)后才能和第二个文件的第3行匹配<helloworld5d4第一个文件的第5行删除后才能和第二个文件的第4行匹配<3336a6,7第一个文件的第6行增加(a=add)内容后才能和第二个文件的第6到7行匹配>333需要增加的内容在第二个文件里是333和world>world


2)上下文格式显示


[root@MissHou~]#diff-cfile1file2前两行主要列出需要比较的文件名和文件的时间戳;文件名前面的符号***表示file1,---表示file2***file12019-04-1616:26:05.748650262+0800---file22019-04-1616:26:30.470646030+0800***************我是分隔符***1,6*******开头表示file1文件,1,6表示1到6行!aaaa!表示该行需要修改才与第二个文件匹配111-helloworld-表示需要删除该行才与第二个文件匹配222-333-表示需要删除该行才与第二个文件匹配bbb---1,7-------开头表示file2文件,1,7表示1到7行!aaa表示第一个文件需要修改才与第二个文件匹配!hello表示第一个文件需要修改才与第二个文件匹配111222bbb+333表示第一个文件需要加上该行才与第二个文件匹配+world表示第一个文件需要加上该行才与第二个文件匹配



3)合并格式显示


[root@MissHou~]#diff-ufile1file2前两行主要列出需要比较的文件名和文件的时间戳;文件名前面的符号---表示file1,+++表示file2---file12019-04-1616:26:05.748650262+0800+++file22019-04-1616:26:30.470646030+0800@@-1,6+1,7@@-aaaa+aaa+hello111-helloworld222-333bbb+333+world


比较两个目录不同

默认情况下也会比较两个目录里相同文件的内容[root@MissHoutmp]#diffdir1dir2diffdir1/file1dir2/file10a1>helloOnlyindir1: file3Onlyindir2: test1如果只需要比较两个目录里文件的不同,不需要进一步比较文件内容,需要加-q选项[root@MissHoutmp]#diff-qdir1dir2Filesdir1/file1anddir2/file1differOnlyindir1: file3Onlyindir2: test1



其他小技巧:


有时候我们需要以一个文件为标准,去修改其他文件,并且修改的地方较多时,我们可以通过打补丁的方式完成。


1)先找出文件不同,然后输出到一个文件[root@MissHou~]#diff-uNfile1file2>file.patch-u:上下文模式-N:将不存在的文件当作空文件2)将不同内容打补丁到文件[root@MissHou~]#patchfile1file.patchpatchingfilefile13)测试验证[root@MissHou~]#difffile1file2[root@MissHou~]#
相关文章
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
454 2
|
3月前
|
Shell Linux 数据处理
Shell文本处理秘籍:掌握这11种工具,让数据处理如虎添翼!
在Linux信息环境,文本数据处理是一项基础而重要的技能。对于广大Linux用户而言,掌握Shell环境下的文本处理工具不仅能提高工作效率,还能在面对复杂数据时游刃有余。 本文将介绍,那些在文本处理中不可或缺的`11`种命令工具,让数据处理技能更上一层楼。
|
4月前
|
Shell Linux C语言
|
4月前
|
Shell 网络安全 UED
|
6月前
|
弹性计算 运维 Shell
基于Shell的灵活配置管理工具
【4月更文挑战第30天】
74 1
|
6月前
|
弹性计算 运维 监控
|
6月前
|
搜索推荐 算法 Java
sort-06-shell sort 希尔排序算法详解
这是一个关于排序算法的系列文章摘要。文章汇总了各种排序算法,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序以及大文件外部排序。特别地,希尔排序是一种改进的插入排序,通过使用不同的步长对元素进行分组排序,以提高效率。算法最终以较小的步长进行排序,接近线性时间复杂度。文章还提供了Java代码实现,并举例说明了希尔排序的过程。所有内容可在开源项目[https://github.com/houbb/sort](https://github.com/houbb/sort)中找到。
|
6月前
|
网络协议 Unix Shell
第十一章 Shell常用命令与工具(二)
第十一章 Shell常用命令与工具(二)
|
6月前
|
移动开发 Shell Linux
第十一章 Shell常用命令与工具(一)
第十一章 Shell常用命令与工具(一)
|
6月前
|
运维 Shell Python
第七章 Shell文本处理三剑客之grep
第七章 Shell文本处理三剑客之grep