命令'md5sum'最后没有'-'token'

时间:2016-12-27 14:20:43

标签: linux bash hash command-line md5

我想在新的单独文本文件中使用md5散列文本文件的内容。这对于每一行。我为此

编写了以下bash脚本
#!/bin/bash
while read line; do echo -n $line|md5sum; done < $1 > $1.hash

这很好用。但是

echo -n 'somewords' | md5sum 

我的输出是这样的8bf1072ac725ca3bc7f532079dd973ba - 我希望我的输出没有 - 最后。所以我的脚本应该给我这样的东西:

hash 1
hash 2
hash 3

而不是

hash 1  -
hash 2  -
hash 3  -

3 个答案:

答案 0 :(得分:1)

由于md5哈希值恰好是32字节长,所以在那里剪切线:

while read line; do echo -n "$line"|md5sum; done < $1 |cut -c1-32 > $1.hash

答案 1 :(得分:0)

我很惊讶没有人回答awk

echo "abc" | md5sum | awk -F "-" '{print $1}'

对于您的示例,它看起来像这样

while read line
do 
    echo -n "$line" | md5sum; 
done < $1 |awk -F "-" '{print $1}' > $1.hash

答案 2 :(得分:0)

您可以按grep过滤输出,例如

printf somewords | md5sum | grep -o '^\S\+'

所以脚本将是:

#!/usr/bin/env bash
while read line; do
  printf "%s" $line | md5sum;
done < "$1" | grep -o '^\S\+' > "$1".hash