Улучшение bash / cut для отображения шестнадцатеричного числа - PullRequest
1 голос
/ 27 мая 2020

Должен быть лучший способ сделать это (тестирование двухблочного 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=$1
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 вставляет тире на каждый символ, а вырез подбирает группировки двойных слов. Есть предложения?

1 Ответ

2 голосов
/ 27 мая 2020

Может быть, это то, что вы хотите:

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