bash - 哈希文本文件中的每一行

标签 bash command-line hash

我正在尝试编写一个小脚本,它将打开一个文本文件并为每行文本提供一个 md5 哈希值。例如我有一个文件:

123
213
312

我希望输出为:

ba1f2511fc30423bdbb183fe33f3dd0f
6f36dfd82a1b64f668d9957ad81199ff
390d29f732f024a4ebd58645781dfa5a

我正在尝试在 bash 中完成这一部分,它将读取每一行:

#!/bin/bash
#read.file.line.by.line.sh

while read line
do
echo $line
done

稍后我会:

$ more 123.txt | ./read.line.by.line.sh | md5sum | cut -d '  ' -f 1

但我在这里遗漏了一些东西,不起作用:(

也许有更简单的方法...

最佳答案

差不多了,试试这个:

while read -r line; do printf %s "$line" | md5sum | cut -f1 -d' '; done < 123.txt

除非您还想散列每一行中的换行符,否则您应该使用 printfecho -n 而不是 echo 选项。

在脚本中:

#! /bin/bash
cat "$@" | while read -r line; do
    printf %s "$line" | md5sum | cut -f1 -d' '
done

可以使用多个文件作为参数调用脚本。

关于bash - 哈希文本文件中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890136/

相关文章:

arrays - 错误的替换 shell-尝试使用变量作为数组的名称

json - 将 IPv4 地址列表格式化\n 为 json

linux - 在不挂载的情况下将文件添加到 VFAT 镜像

java - 从 OSGi 包访问命令行参数

java - 比 HashTable 更好的数据结构来跟踪处理过的记录?

C# hashtable 添加我自己创建的类

windows - 如何有效地替换大文件中最后一次出现的模式

linux - Xfces 用户定义的操作在控制台中工作时不起作用

command-line - 通过命令行在 iphone 设备中安装应用程序

ruby - 通过 MD5 哈希算法运行哈希