Bash操作:反转MD5文件中哈希与文件名顺序并按字母排序
没问题,这有几个简单高效的方法可以帮你搞定需求,根据你平时常用的工具选就行:
方法1:用awk + sort 命令行工具(最快捷)
假设你的file1.txt每行格式是 MD5哈希值 文件名(哈希和文件名用空格分隔),直接在终端运行下面的命令:
awk '{print $2, $1}' file1.txt | sort > file2.txt
简单解释下各部分的作用:
awk '{print $2, $1}':把每行的第二个字段(文件名)和第一个字段(MD5哈希)交换位置输出sort:自动把交换后的内容按文件名首字母升序排序> file2.txt:将最终结果写入目标文件file2.txt
如果你的文件里哈希和文件名之间是其他分隔符(比如逗号、制表符),可以调整awk的分隔符参数:
- 制表符分隔:
awk -F'\t' '{print $2, $1}' file1.txt | sort > file2.txt - 逗号分隔:
awk -F',' '{print $2, $1}' file1.txt | sort > file2.txt
方法2:用Python脚本(适合需要更灵活处理的场景)
如果你习惯用Python,或者需要处理空行、异常格式等复杂情况,可以用这个脚本:
# 读取源文件内容 with open('file1.txt', 'r') as f_in: lines = f_in.readlines() processed_lines = [] for line in lines: line = line.strip() if not line: continue # 跳过空行 # 这里默认按空格分割,分隔符不同可修改为split(',')或split('\t') parts = line.split() if len(parts) >= 2: filename = parts[1] md5_hash = parts[0] processed_lines.append(f"{filename} {md5_hash}") # 按文件名字母顺序排序 processed_lines.sort() # 写入目标文件 with open('file2.txt', 'w') as f_out: f_out.write('\n'.join(processed_lines) + '\n')
运行脚本后,就能得到符合要求的file2.txt。
内容的提问来源于stack exchange,提问作者user9331490
相关产品推荐
相关产品推荐

