Linux Shell编程——常用指令diff 、cut、sort、uniq

一、diff命令

diff命令是用来比较两个文件或目录的不同

diff 参数 target1 tarfet2

diff在比较文件过程中结果的读取方式

[num1,num2][a|c|d][num3,num4]

num1,num2表示在第一个文件中的行数;num3,num4表示在第二个文件中的行数
a表示:add 添加
c表示:change 更改
d表示:delete 删除
< 表示第一个文件的内容;   
> 表示第二个文件的内容
- - - 分割线
例:2,4c2,4 表示改变第一个文件的第2行和第四行才能匹配第二个文件的第2行和第4行

测试:
比较file1,file2;

diff在比较目录过程中结果的读取方式

在test1目录里touch一个文件file,test2目录下没有文件
比较test1,test2

diff test1 test2

diff命令中常用的参数

-b      不检查空格字符的不同
-B      不检查空白行
-c      显示全部内文,并标出不同之处
-i       不检查大小写的不同
-p       比较的文件为C语言的程序码文件时,显示差异所在的函数名称(只能比较源码文件)
-q       仅显示有无差异,不显示详细的信息
-r       比较子目录中的文件
-u       以合并的方式来显示文件内容的不同

1.测试不检查空格字符的不同
2.测试不检查空白行
3.测试显示全部内文,并标出不同之处
4.不检查大小写的不同
5.
6.测试仅显示有无差异,不显示详细的信息
7.测试比较子目录中的文件
8.以合并的方式来显示文件内容的不同

patch 用于文件更新后不同文件,打补丁,类似游戏
yum install patch -y
patch -b file1 filetest      ##保留源文件打补丁
patch file1 filetest

二、cut命令

cut命令多用于字符截取
-d        指定分隔符
-f         指定截取的列
-c         指定截取的字符位置

测试:复制一份/etc/passwd到mnt/用于实验
1.以:为分隔符截取passwd里的第1列和第3列
2.以:为分隔符截取passwd里的第1列到第3列
3.截取passwd里的第1个字符和第4个字符
4.截取passwd里的第1个字符到第4个字符

脚本示例:

执行ip_show.sh可以显示当前主机的ip地址

vim ip_show.sh
#!/bin/bash
ifconfig eth0 | grep inet | cut -d " " -f 16

执行user_show.sh显示当前主机中能登录系统的用户

#!/bin/bash
grep bash /etc/passwd | cut -d : -f 1

三、sort命令

多用于字符排序
sort -n       ##纯数字排序
sort -r        ##倒序
sort -u       ##去掉重复数字
sort -o       ##输出到指定文件中
sort -t        ##指定分隔符
sort -k        ##指定要排序的列

测试:新建一个文件westos并写入内容

1.对westos里的内容进行排序
2.对westos里的内容进行纯数字排序
3.对westos里的内容进行纯数字倒序排序
4.对westos里的内容进行纯数字排序并且不要有重复
5.对westos里的内容进行纯数字排序不要有重复,并且输出到指定文件file中
6.对westos里的第二列内容进行纯数字排序

四、uniq命令

对重复字符做相应的处理(通常与sort配合使用)
uniq -u        ##显示唯一的行
uniq -d        ##显示重复的行
uniq -c         ##每行显示一次并统计重复次数

测试:
1.对westos里的内容进行纯数字排序,且每行统计一次并统计重复数字
2.对westos里的内容出现一次的进行纯数字排序
3.对westos里的内容进行纯数字排序,且只显示重复的行

猜你喜欢

转载自blog.csdn.net/weixin_44209804/article/details/88037299