最後に「-」なしでSHAを印刷しますか?

最後に「-」なしでSHAを印刷しますか?

-最後に追加せずにSHA合計を印刷できますか?

$ echo test | sha1sum 
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83  -  <--- this "-" dash/hyphen

awk他のコマンドラインツールを使用できることを知っていますが、他のツールを使わなくてもできますか?

$ echo test | sha1sum | awk '{print $1}'
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83

答え1

sha1sumハッシュの長さは40文字なので、出力をheadコマンドにパイプして最初の40文字を抽出できます。

echo test | sha1sum | head -c 40

源泉:https://stackoverflow.com/a/14992739/4642023

答え2

これは他のツールがないか、実際のsha1sumスクリプト/バイナリを編集しないと不可能です。 sha1sum がファイルに入力されると、合計の後にファイル名が印刷されます。 sha1sumがファイルに付属していない場合、またはパイプで使用されている場合。 - 入力がファイルではないことを示すためにプレースホルダとして使用されます。

答え3

Bashには追加のツールはありません。

h=($(echo test | sha1sum )) ;echo $h 

4e1243bd22c66e76c2ba9eddc1f91394e57f9f83

または

 h=( `echo test | sha1sum` ) ;echo $h 

Bashでは、hの「配列」宣言を使用して、タグ付きのマルチインデックス配列を作成します。変数を参照するために$ hを使用して配列を再インデックスすることは、$ {h [0]}と同じです。

基本シェル交換の使用

 h=`echo test | sha1sum` ;echo ${h// */} 

またはposixシェル(sh、dash、bash)を使用してサフィックスを削除する%

h=`echo test | sha1sum` ;echo ${h%-}

配列の使用はより直感的なオプションですが、機能することもできます。

Base64を追加

xxd + base64を使用して、印刷可能な文字範囲でエントロピーを増やす(ビット数を減らす)ことができます。

 h=($(echo test | sha1sum )) ;echo $h|xxd -r -p |base64
ThJDvSLGbnbCup7dwfkTlOV/n4M=

答え4

誰もこれを言及していないことが奇妙に見えますが、「tr」コマンドを使用して出力をトリミングするのが最も簡単であることがわかりました。 bash / perl / python正規表現の内容はありませんが、5分間のインターネット検索なしでは取得できません。

$ echo -n "hello" | sha256sum | tr -d "\n *-"
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

関連情報