如何在 shell 中通过管道传输 md5 哈希结果

如何在 shell 中通过管道传输 md5 哈希结果

我正在寻找一种简单的方法将结果传输md5sum到另一个命令中。像这样的东西:

$echo -n 'test' | md5sum | ...

我的问题是md5sum不仅输出字符串的哈希值,还输出连字符,这表明输入来自标准输入。我检查了 man 文件,没有找到任何控制输出的标志。

答案1

您可以使用命令;它允许您从每个输入行中剪切特定的字符/字节范围。由于 MD5 哈希具有固定长度(32 个字符),因此您可以使用该选项-c 1-32仅保留输入行中的前 32 个字符:

echo -n test | md5sum | cut -c 1-32

或者,您可以告诉cut在每个空格处分割行并仅输出第一个字段:(注意空格字符周围的引号)

echo -n test | md5sum | cut -d " " -f 1

请参阅剪切联机帮助页以获得更多选择。

答案2

你可以cut

echo -n 'test' | md5sum | cut -d' ' -f1

此处,-d' '选择空格作为分隔符,并-f1要求输入第一个字段(分隔符之前)。

答案3

使用awk也工作得很好:

echo -n 'test' | md5sum | awk '{print $1}'

另一种方法是创建子字符串。因为您知道 md5 哈希是一个包含 32 个字符的字符串,所以您可以使用:

HASH=$(echo -n 'test' | md5sum -) && echo ${HASH:0:32}

这只是字符串操作,所以你有选择!

相关内容