回答:
コマンド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"(他の例の中でも)動作します。