Shell:脚本中常用命令(diff,patch,cut,sort)

本文深入介绍Linux环境下文件比较、补丁应用、字符截取、排序、重复字符处理等核心命令的使用技巧,包括diff、patch、cut、sort、uniq及条件执行命令&&和||,并涵盖test命令的详细用法。

一.diff

1.diff命令
diff命令是用来比较俩个文件的或者目录的不同

diff  [options]  target1   target2
diff   file1   file2
diff  directory1   directory2

2.diff在文件比较过程中的读取方式

[num1,num2][a][c][d][num3][num4]
num1,num2表示在第一个文件中的行数
num3,num4表示在第一个文件中的行数
a表示添加-------add
c表示更改-------change
d表示删除-------delete
< 表示第一个文件中的内容
表示第二个文件中的内容

3.diff命令中常用的参数

-b或者–ignore-space-change不检查空格字符的不同
-B或–ignore-blank-lines不检查空白行
-c显示全部内文,并标出不同之处
-c1显示不同字符的上下1行
-c2显示不同字符的上下俩行
-i或–ignore-case不检查大小写的不同
-p若比较的文件为c语言的程序文件时,显示差异所在的函数名称
-q或–brief仅显示有无差异,不显示详细信息
-r或–recursive比较子目录中的文件
-u以合并的方式来显示文件内容的不同
[root@shell mnt]# diff -b test1 test2

在这里插入图片描述

[root@shell mnt]# diff -B test1 test2

在这里插入图片描述

[root@shell mnt]# diff -c test1 test2

在这里插入图片描述

[root@shell mnt]# diff -i test1 test2

在这里插入图片描述

[root@shell mnt]# diff -q test1 test2

在这里插入图片描述

[root@shell mnt]# diff -u test1 test2

在这里插入图片描述

二.patch命令

用于对不同的文件打补丁

1.patch的启用

yum install  patch -y   ##在yum源搭建好后

在这里插入图片描述
在这里插入图片描述
2.patch的使用

[root@shell ~]# diff -u test test1 > test.path   ##比较文件的全文的不同,并定向到补丁文件test.path中

在这里插入图片描述

[root@shell ~]# patch test test.patch   ##生成新的文件test.path
[root@shell ~]# patch -b test test.patch  ##-b表示生成新的文件test.orig但不覆盖源文件test.path的值

在这里插入图片描述

三.cut命令

cut命令多用于字符截取
cut常用命令及其参数

cut -d指定分隔符
cut -f指定截取的列
cut -c指定截取的字符位置
[root@shell mnt]# cut -d : -f 1 passwd  ##截取该文件第一列

在这里插入图片描述
在这里插入图片描述

[root@shell mnt]# cut -d : -f 1-3 passwd

在这里插入图片描述

[root@shell mnt]# cut -c 1-4 passwd  ##截取第1到4个字符

在这里插入图片描述

四.sort命令

sort多用于字符排序

sort -n纯数字排序
sort -r倒序
sort -u去掉重复数字
sort -o输出到指定文件中
sort -t指定分割符
sort -k指定要排序的列
[root@shell mnt]# sort -rn westos  ##倒序且纯数字排序
[root@shell mnt]# sort -run westos  ##纯数字倒序并且去掉重复数字

在这里插入图片描述

五.uniq命令

对重复的字符做相应处理

uniq -u显示唯一的行
uniq -d显示重复的行
uniq -c每行显示一次并统计重复次数
[root@shell mnt]# sort -n westos | uniq -c
 1 23   ##23出现了1次
[root@shell mnt]# sort -n westos | uniq -d
[root@shell mnt]# sort -n westos | uniq -u

在这里插入图片描述

[root@shell mnt]# sort -t : -k 2 westos
[root@shell mnt]# sort -t : -k 2 -n westos

在这里插入图片描述

六.&&和||

&&用来执行条件成立后执行的命令
||用来执行条件不成立后执行的命令
在这里插入图片描述

七.test命令

test命令和[ ]等同
tset “$ A"=="$ B"等同[ “$A” = = " $ B "

-ef俩个文件是不是属于同一个
-nt前一个文件比后一个文件新
-ot前一个文件比后一个文件老
inodeid的节点号
-e文件是否存在
-f是否为文件
-L是否为链接
-b是否为块设备
-c是否为字符设备
-d是否为目录
-s是否为套接字
[ "$A="$B"]    [ "$A -eq "$B"]   #A等于B
[ "$A!="$B"]    [ "$A -ne "$B"]  #A不等于B 

在这里插入图片描述
在这里插入图片描述

[ "$A" -le "$B" ]    #A小于等于B
[  "$A" -lt "$B" ]   #A小于B
[  "$A" -ge "$B" ]    #A大于等于B
[  "$A" -gt "$B" ]    #A大于B
[  "$A" -ne "$B"  -a   "$A" -gt "$B"  ]  #A不等于B并且A大于B
[  "$A" -ne "$B"  -o   "$A" -gt "$B"  ] #A不等于B或者A大于B

在这里插入图片描述

[ -z  "$A ]   #判断A是否为0
[ -n "$A ]    #判断A是否存在

在这里插入图片描述

在这里插入图片描述

[ "file1" -ef "file2" ]   ##file1和file2是否为同一个文件
[ "file1" -nt "file2" ]  ##file1比file2建立的时间晚  
[ "file1" -ot "file2" ]  ##file1比file2建立的时间早

在这里插入图片描述
练习:
(1)在/mnt写一个脚本,执行脚本时脚本后面如果输入为目录则显示这是一个目录,如果输入一个文件时则显示这是一个文件,如果不存在是显示不存在,如果输入为空时则显示要输入的内容,如果以上都不符合则exit脚本退出,脚本运行的程序立即终止

[root@shell mnt]# vim check_file.sh 

文件编辑内容如下:
在这里插入图片描述
验证如下:
在这里插入图片描述
(2)在/mnt下写一个脚本,后面如果加ip如果ping通则显示yes,否则显示no,空的话提示要输入的检测的ip

[root@shell mnt]# vim  ping.sh

脚本编辑内容如下:
在这里插入图片描述
检测如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值