web-dev-qa-db-ja.com

シェルでmd5ハッシュ結果をパイプする方法

md5sumの結果を別のコマンドにパイプする簡単な方法を探しています。このようなもの:

$echo -n 'test' | md5sum | ...

私の問題は、md5sumが文字列のハッシュだけでなく、入力がstdinからのものであることを示すハイフンも出力することです。 manファイルを確認したところ、出力を制御するためのフラグが見つかりませんでした。

12
nmat

コマンド cut ;を使用できます。すべての入力行から特定の文字/バイトの範囲を切り取ることができます。 MD5ハッシュは固定長(32文字)であるため、オプション-c 1-32を使用して、入力行の最初の32文字のみを保持できます。

echo -n test | md5sum | cut -c 1-32

または、cutにすべてのスペースで行を分割し、最初のフィールドのみを出力するように指示できます(スペース文字を囲む引用符に注意してください)。

echo -n test | md5sum | cut -d " " -f 1

その他のオプションについては カットのマンページ を参照してください。

14
Riccardo Murri

cutできます:

echo -n 'test' | md5sum | cut -d' ' -f1

ここに、 -d' 'は区切り文字としてスペースを選択し、-f1は、最初のフィールド(区切り文字の前)を要求します。

3

awkを使用しても問題ありません。

echo -n 'test' | md5sum | awk '{print $1}'

別の方法は、部分文字列を作成することです。 md5ハッシュは32文字の文字列であることを知っているので、次のように使用できます。

HASH=$(echo -n 'test' | md5sum -) && echo ${HASH:0:32}

それは単なる文字列操作なので、選択肢があります!

2
sdesvergez