Linux脚本攻略学习笔记之MD5与sort实例演示

本文详细介绍MD5算法在文件校验中的应用,包括生成MD5校验和、校验单个及多个文件完整性、对目录进行递归校验的方法。同时,探讨了如何使用sort命令进行数据排序、去重及检查排序状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MD5

通过使用校验和核实,我们就可以识别出那些在网络传输过程中出现损坏的文件,并进行重发
最知名且使用最为广泛的校验和技术是md5sum和SHA-1。它们对文件内容使用相应的算法
来生成校验和。

1.1、生成MD5

 md5sum a2

在这里插入图片描述

从上面结果可以看到 md5sum是一个32个字符的16进制串

1.2、多个文件校验和

md5sum file1 file2 file3 使用多个文件时,会显示单个文件的校验和
[checknum1] file1
[checknum2] file2
[checknum3] file3

1.3、校验数据完整性

先将md5输入到指定文件中

md5sum a2 >sumchekc/a2.md5

校验文件完整性

md5sum  -c   ./sumchekc/a2.md5

在这里插入图片描述

1.4、校验多个文件的完整性

md5sum  -c  *.md5

1.5、对目录进行校验

校验和是从文件中计算得来的。对目录计算校验和意味着我们需要对目录中的所有文件以递归的方式进行计算。这可以用命令 md5deep 或 sha1deep 来实现。首先,需要安装md5deep软件包以确保能找到
这些命令。

$ md5deep -rl directory_path > directory.md5
# -r 使用递归的方式
# -l 使用相对路径。默认情况下,md5deep 会输出文件的绝对路径

或者也可以结合 find 来递归计算校验和:

$ find directory_path -type f -print0 | xargs -0 md5sum >> directory.md5

用下面的命令进行核实:

$ md5sum -c directory.md5

二、排序、唯一与重复

2.1 定义

sort 命令既可以从特定的文件,也可以从 stdin 中获取输入,并将输出写入 stdout 。 uniq
的工作方式和 sort 一样

2.2、语法

sort file1.txt file2.txt >sorted.txt
或者
sort file1.txt file2.txt -o sorted.txt

2.3、实例1

在这里插入图片描述
从下面的结果看到是把文件内容排序后输出到sorted.txt文件中
在这里插入图片描述

2.4、选项-n 按照数字排序

将如下文件进行排序:
在这里插入图片描述

排序

sort -n  a2  #同样排序不会修改原文件内容

在这里插入图片描述

排序后再来看原文件 顺序还是和原来一样
在这里插入图片描述

2.5、选项-r 逆序排序

sort -r a2

在这里插入图片描述

2.6、选项-m合并两个排序的文件

sort -m sorted1 sorted2   

在这里插入图片描述

2.7 找出已排序文件中不重复的行

来看如下已排序文件
在这里插入图片描述
去重:

sort sort/sorted.txt | uniq

在这里插入图片描述

2.8 -c选项检查是否排过序

对文件a2 排序输出到sorted.txt
在这里插入图片描述
-c 选项检查是否已正确排序 ,如果文件已经排序, sort -c 会返回为0的退出码
( $? ),否则返回非0

检查排序脚本如下:

#!/bin/bash
sort -c sort/sorted.txt
if [ $? -eq 0 ] ;then
echo "sorted.txt has sorted"
else
echo  "sorted.txt has unsorted"
fi

授权并执行脚本,结果如下:

在这里插入图片描述
把脚本中文件改为a2

在这里插入图片描述

再执行脚本

在这里插入图片描述

2.9 -k 指定排序列

在这里插入图片描述

2.9.1按照第一列 排序

sort -nrk 1 sort/data.txt
 #-nr 表明按照数字,采用逆序形式排序

在这里插入图片描述

2.9.2、按照第二列排序

sort -k 2 sort/data.txt

在这里插入图片描述

2.9.3 指定排序字符范围列

有如下数据。
在这里插入图片描述
指定第一个字符为排序

sort -nk 1,1 data.txt

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值