【问题标题】:To generate md5sum for each value in a column (.CSV file) and then compare the generated md5sum value with the already given md5sum value为列(.CSV 文件)中的每个值生成 md5sum,然后将生成的 md5sum 值与已经给定的 md5sum 值进行比较
【发布时间】:2021-07-22 14:06:51
【问题描述】:

我是 Linux 的初学者,仍在学习,但我无法继续完成任务

所以有一个包含几列的 CSV 文件。

第 1 列 - 文件名,

第 2 列 - 文件路径,

第 3 列 - 该文件的 md5sum 值(每行)。

我的目标是通过转到提到的路径(第 2 列)生成文件的 md5sum 值(第 1 列),然后将该值与 CSV 文件中已经存在的 md5sum 进行比较,同时忽略前三行(标题)。对于 CSV 文件中的所有行

例子

cat Sample.csv

header1 
header2
file,pathTofile,md5sum
script.sh,/c/folder,987fg98df7g9df7g94353454
another.sh,/c/training/folder,54657981sdssgs654643535

OUTPUT假设第 1 行的 md5sum 值正确,第 2 行没有)

md5sum is a match for script.sh
md5sum is not a match for another.sh

提前致谢

【问题讨论】:

  • 您的 md5 哈希值太短(24 和 23 个字符而不是 32 个字符)并且包含非十六进制符号 (...sg...)。这些只是实际 32 位值的占位符吗?
  • 嗨@Socowi 是的,它们只是占位符文本

标签: linux bash csv unix md5sum


【解决方案1】:

来自man md5sum

-c,--检查
从文件中读取 MD5 和并检查它们

这里的文件与md5sum的输出格式相同:

bb8c5900589a82f48e15c2688670de39  file1
f23d2d7f519425c547d9e4287940ef72  /path/to/file2
...

因此您可以重新排列您的 csv 文件以具有相同的格式,然后运行 ​​md5sum -c:

awk -F, 'NR>3 {print $3"  "$2"/"$1}' Sample.csv | md5sum -c

NR>3 跳过您的标题。如果您的示例不准确,请确保将 3 替换为实际的标题行数。

md5sum -c 的输出看起来像

file1: OK
/path/to/file2: OK
some/corrupted/file: FAILED
file4: OK
...
md5sum: WARNING: 1 computed checksum did NOT match

【讨论】:

  • 嗨@Socowi,谢谢你。我似乎没有这样想。但这仍然存在问题,因为脚本需要生成第二个 md5sum 值。只有生成后,这个方法才能通过排列它们然后使用md5sum -c
  • @Nikhil 抱歉,我不明白您的评论和所描述的问题。 required to generate the second md5sum”是什么意思?这听起来像您假设md5sum -c 的工作方式类似于diff,比较两个哈希列表,但事实并非如此。 md5sum -c 将 csv 文件中的旧 md5sum 与每个文件的 动态计算的 md5sum 进行比较。不涉及第二个 csv 文件。
  • 抱歉,我应该措辞更好。我假设您的意思是说md5sum -c 将比较 $3(第 3 列是 md5sum 值)和"$2"/"$1(第 2 列和第 1 列连接,将为其动态创建 md5sum?)如果是这样的话我可以将输入的 CSV 文件传递​​给awk -F, 'NR>3 {print $3" "$2"/"$1}' | md5sum -c,因为我不确定如何传递必须读取的文件。
  • 哦对了,我忘记添加文件了... 把它作为awk 的最后一个参数。我编辑了答案。
  • 即使我没有得到所需的输出,也有一些进展。上节目md5sum: /C/training: No such file or directory /c/training: Failed open or read md5sum: WARNING: 1 line is improperly formatted md5sum: WARNING: 2 listed files could not be read 最初我以为我提到的路径有问题,但这似乎是正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
相关资源
最近更新 更多