Saya mencari cara sederhana untuk menyalurkan hasil md5sum
ke perintah lain. Sesuatu seperti ini:
$echo -n 'test' | md5sum | ...
Masalah saya adalah bahwa md5sum
output tidak hanya hash dari string, tetapi juga sebuah tanda hubung, yang menunjukkan bahwa input berasal dari stdin. Saya memeriksa file man dan saya tidak menemukan flag untuk mengontrol output.
bash
ubuntu
shell-script
hashsum
nmat
sumber
sumber
echo -n
saat data teks tidak dikenal. Gunakanprintf '%s' "$DATA"
sebagai gantinya. Tidak sepertiecho -n "$DATA"
itu, itu akan berfungsi ketikaDATA="-n"
(antara contoh lainnya).Jawaban:
Anda dapat menggunakan potongan perintah ; ini memungkinkan Anda untuk memotong rentang karakter / byte tertentu dari setiap jalur input. Karena hash MD5 memiliki panjang tetap (32 karakter), Anda dapat menggunakan opsi
-c 1-32
untuk menyimpan hanya 32 karakter pertama dari baris input:Atau, Anda dapat memberitahu
cut
untuk membagi garis di setiap ruang dan hanya menghasilkan bidang pertama: (perhatikan tanda kutip di sekitar karakter spasi)Lihat halaman manual cut untuk lebih banyak opsi.
sumber
-d
+-f
sehinggamd5sum
dapat diganti dengansha1sum
atau apa pun nanti.awk
berfungsi juga:echo -n test | md5sum | awk -F" " '{print $1}'
atauawk -F" " '{print $1}' <(echo -n test | md5sum)
-F" "
opsi untukawk
sangat aneh untuk dilihat, mengingat bahwa itu adalah default untukawk
.Anda bisa
cut
:Di sini,
-d' '
pilih ruang sebagai pembatas, dan-f1
meminta bidang pertama (sebelum pembatas).sumber
Menggunakan awk juga berfungsi dengan baik:
Cara lain adalah membuat substring. Karena Anda tahu md5 hash adalah string dengan 32 karakter, Anda dapat menggunakan:
Itu hanya manipulasi string, jadi Anda punya pilihan!
sumber