कैसे md5 हैश परिणाम खोल में पाइप करने के लिए


12

मैं md5sumदूसरे कमांड में परिणाम के लिए एक सरल तरीका ढूंढ रहा हूं । कुछ इस तरह:

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

मेरी समस्या यह है कि md5sumआउटपुट न केवल स्ट्रिंग का हैश है, बल्कि एक हाइपेन भी है, जो इंगित करता है कि इनपुट स्टड से आया है। मैंने मैन फाइल को चेक किया और आउटपुट को नियंत्रित करने के लिए मुझे कोई झंडे नहीं मिले।


4
नोट: echo -nपाठ डेटा अज्ञात होने पर उपयोग न करने के लिए सावधान रहें । printf '%s' "$DATA"इसके बजाय उपयोग करें । इसके विपरीत echo -n "$DATA", यह तब काम करेगा जब DATA="-n"(अन्य उदाहरणों के बीच)।
स्टेफेन जिमेनेज

जवाबों:


14

आप कमांड कट का उपयोग कर सकते हैं ; यह आपको हर इनपुट लाइन से एक निश्चित चरित्र / बाइट श्रेणी को काटने की अनुमति देता है। चूंकि एमडी 5 हैश की लंबाई (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)
laebshade

जवाब के लिए धन्यवाद। @laebshade वास्तव में, आपको प्रिंटफ का उपयोग करना होगा अन्यथा यह अंत में एक नई पंक्ति वर्ण का उत्पादन करेगा;)
nmat

@laebshade: -F" "विकल्प awkदेखने में बहुत अजीब है, यह देखते हुए कि यह डिफ़ॉल्ट है awk
enzotib

3

आप cutयह कर सकते हैं:

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

यहां, -d' 'अंतरिक्ष को सीमांकक के रूप में चुनता है, और -f1पहले क्षेत्र (सीमांकक से पहले) के लिए पूछता है।


2

Awk का उपयोग करना ठीक काम करता है:

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

एक और तरीका एक विकल्प बना रहा है। क्योंकि आप जानते हैं कि md5 हैश 32 अक्षरों वाला एक स्ट्रिंग है, जिसका आप उपयोग कर सकते हैं:

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

यह सिर्फ स्ट्रिंग जोड़तोड़ है, इसलिए आपको पसंद आया!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.