तो मेरे पास यह फ़ाइल है जिसमें कुछ डेटा है। कि मैं ग्राफ़विज़ का उपयोग करके एक ग्राफ बनाने के लिए उपयोग करता हूं। समस्या यह है कि मुझे एक फ़ाइल खोलने और फ़ाइल के अंत और शुरुआत में एक घुंघराले ब्रेसिज़ लगाने की आवश्यकता है। मैं शुरुआती ब्रेसिज़ से पहले डिग्राफ भी लिखता हूं।
ग्राफ बनाने के लिए मेरी स्क्रिप्ट चलाने के बजाय।
cat data.txt | dot -Tpng > image.png
समस्या यह है कि मैं पहले चरण को स्वचालित करना चाहता हूं और शुरुआत में digraph {
और अंत में }
अपनी स्क्रिप्ट के साथ जोड़ना चाहता हूं जो ग्राफ बनाता है।
4 जवाब
आप एक सूची {…}
का उपयोग करके अपने आदेश निष्पादित कर सकते हैं:
{ echo 'digraph {'; cat data.txt; echo '}'; } | dot -Tpng > image.png
sed
का उपयोग करना:
printf 'digraph {\n}\n' | sed '1r data.txt' | dot -Tpng > image.png
अपनी फ़ाइलों की सामग्री के चारों ओर पाठ जोड़ने के बजाय, आप अपनी फ़ाइलों की सामग्री को आवरण में इंजेक्ट करते हैं।
आप अपने डेटा को गूंजने के लिए फीड कर सकते हैं, data.text को ``s के माध्यम से लोड कर सकते हैं। एक आधुनिक शेल में आप $() निर्माण का भी उपयोग कर सकते हैं।
एक प्रतिध्वनि प्रक्रिया, एक बिल्ली प्रक्रिया, एक बिंदु प्रक्रिया:
echo digraph {`cat data.text`} | dot -Tpng > image.png
अवेक का प्रयास करें।
awk 'BEGIN { print "digraph (" }
1
END { print ")" }' data.txt |
dot -Tpng > image.png
1
{ print }
के लिए एक साधारण Awk शॉर्टहैंड है। cat
सख्ती से जरूरी नहीं था,
संबंधित सवाल
नए सवाल
bash
बैश कमांड शेल के लिए लिखी गई लिपियों के बारे में प्रश्नों के लिए। त्रुटियों / वाक्यविन्यास त्रुटियों के साथ शेल स्क्रिप्ट के लिए, कृपया यहां पोस्ट करने से पहले शेलचेक प्रोग्राम (या वेब शेलचेक सर्वर पर https://shellcheck.net) के साथ उन्हें जांचें। बैश के इंटरैक्टिव उपयोग के बारे में सवाल स्टैक ओवरफ्लो की तुलना में सुपर उपयोगकर्ता पर ऑन-टॉपिक होने की अधिक संभावना है।