Bash/cut 显示十六进制的改进

Bash/cut improvement for displaying hexadecimal

必须有更好的方法来做到这一点(测试 2 块 SHA256):

if [ $# -eq 0 ];
then
    text='The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.'
else
    text=
fi
echo -n $text | shasum -a 256
echo -n $text | shasum -a 256 | sed -n 's/ */-/gp' | cut -c17,33,49,65,81,97,113,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128

sed 在每个字符处插入破折号,并且 cut 选取双字分组。有什么建议吗?

也许这就是你想要的:

echo -n "$text" | shasum -a 256 | cut -d' ' -f1 | sed -e 's/\(.\{8\}\)/-/g' -e 's/-$//'