我想在新的单独文本文件中使用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 -
答案 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