回答:
コマンドcutを使用できます。すべての入力行から特定の文字/バイト範囲を切り取ることができます。MD5ハッシュは固定長(32文字)である-c 1-32
ため、入力行の最初の32文字のみを保持するオプションを使用できます。
echo -n test | md5sum | cut -c 1-32
または、cut
すべてのスペースで行を分割し、最初のフィールドのみを出力するように指示できます(スペース文字を囲む引用符に注意してください)
echo -n test | md5sum | cut -d " " -f 1
その他のオプションについては、カットのマンページを参照してください。
-d
+ を選択した-f
ので、後でmd5sum
置き換えることができますsha1sum
。
awk
動作: echo -n test | md5sum | awk -F" " '{print $1}'
またはawk -F" " '{print $1}' <(echo -n test | md5sum)
-F" "
オプションawk
は非常に奇妙ですawk
。
あなたはcut
それができます:
echo -n 'test' | md5sum | cut -d' ' -f1
ここで-d' '
は、スペースを区切り文字として選択-f1
し、最初のフィールド(区切り文字の前)を要求します。
awkを使用してもうまくいきます:
echo -n 'test' | md5sum | awk '{print $1}'
別の方法は、部分文字列を作成することです。md5ハッシュは32文字の文字列であることがわかっているため、次を使用できます。
HASH=$(echo -n 'test' | md5sum -) && echo ${HASH:0:32}
それは単なる文字列操作なので、選択肢があります!
echo -n
テキストデータが不明な場合は使用しないように注意してください。printf '%s' "$DATA"
代わりに使用してください。とは異なりecho -n "$DATA"
、DATA="-n"
(他の例の中でも)動作します。