我有一个 file1.txt,其中包含 MD5sum 列表和相应的文件名。
edad74614d6d3fa2252c3d74ff037ac7 wp-blog-header.php
de4edc0df80ba147ebcc26f9e0a8b96f wp-config.php
68070de41736e57f8757648a80b9cbbb wp-admin/upgrade-functions.php
29b6a5c82153f1371e1188ffa7b47619 wp-admin/error_log
55373449cc2320c57803f1f5b52b9ce9 wp-admin/edit.php
我如何将其转储到 file2.txt 中,其中的行以文件名而不是哈希开头,并按字母顺序排序,如下所示:
wp-blog-header.php edad74614d6d3fa2252c3d74ff037ac7
wp-config.php de4edc0df80ba147ebcc26f9e0a8b96f
wp-admin/edit.php 55373449cc2320c57803f1f5b52b9ce9
wp-admin/error_log 29b6a5c82153f1371e1188ffa7b47619
wp-admin/upgrade-functions.php 68070de41736e57f8757648a80b9cbbb
非常感谢!
答案1
-k
如果您的目的是根据特定列对文本文件进行排序,则使用GNU 选项时无需更改列顺序sort
。要仅根据第二列和后续列(空格分隔)进行排序,请使用:
sort -k 2
此外,我建议您使用C
或POSIX
排序规则区域设置来比较和排序路径名,否则您可能会因不区分大小写或特殊字符而收到意外结果:
LC_COLLATE=POSIX sort ...
答案2
怎么样:
awk '{ print $2, $1 }' < file | sort > file2
这将从名为“file”的文件中获取数据,交换两个字段并将它们排序到文件“file2”中
答案3
从评论部分我相信您正在寻找的是“更改跟踪”,而不是“MD5 字符串的比较”。
根据@Colin lan King的回答。我开发了这个bash脚本来实现这个操作:
#!/bin/bash
#Difference of all files within /etc
find_etc () {
find /etc -type f -exec sh -c "md5sum {} | sort -bd" {} \;
}
md5_files="$(find_etc)"
date=$(date '+%Y%m%d_%H%M%S')
echo "$md5_files">/acme_tools/ids/inventory.$date.txt
echo -e "\nGenerating /acme_tools/ids/inventory.<yyyymmdd_hhmmss>.txt"
ls /acme_tools/ids/ | grep inventory.$date.txt
echo -e "\nMD5 hash of each text file:"
for txt in /acme_tools/ids/*.txt; do md5sum $txt; done | awk '{print $2, $1}' | sort -bn
echo ""
该脚本的作用是:
- 为 /etc 下的所有文件生成 MD5 字符串,一系列生成的文本文件的差异将用于跟踪
- 生成 YYYYmmdd_hhmmss 格式的日期字符串,用于数字排序
- (您可以使用其他日期时间格式,但这会使排序命令更加复杂)
- 由于 bash 通常会突出显示 的输出
grep
,我们使用它来表示刚刚生成的文本文件 - 然后,给 bash 一个 for 循环,
md5sum
对随时间生成的每个文本文件执行该循环 - 立即将循环结果通过管道传输到
awk
并反转 - 最后将结果从
awk
传输到sort
以-b
忽略空白,-n
按数字排序
你得到:
Generating /acme_tools/ids/inventory.<yyyymmdd_hhmmss>.txt
inventory.20230206_033543.txt
MD5 hash of each text file:
/acme_tools/ids/inventory.20230206_033102.txt 2fac123738b76a2ba96a3f204a294093
/acme_tools/ids/inventory.20230206_033137.txt 2fac123738b76a2ba96a3f204a294093
/acme_tools/ids/inventory.20230206_033527.txt 46f7c817b3980bcd4efe57dc1a3b10ce
/acme_tools/ids/inventory.20230206_033543.txt 46f7c817b3980bcd4efe57dc1a3b10ce
我们可以看到MD5 哈希字符串随时间的变化。