तो मेरे पास यह फ़ाइल है जिसमें कुछ डेटा है। कि मैं ग्राफ़विज़ का उपयोग करके एक ग्राफ बनाने के लिए उपयोग करता हूं। समस्या यह है कि मुझे एक फ़ाइल खोलने और फ़ाइल के अंत और शुरुआत में एक घुंघराले ब्रेसिज़ लगाने की आवश्यकता है। मैं शुरुआती ब्रेसिज़ से पहले डिग्राफ भी लिखता हूं।

ग्राफ बनाने के लिए मेरी स्क्रिप्ट चलाने के बजाय।

cat data.txt | dot -Tpng > image.png

समस्या यह है कि मैं पहले चरण को स्वचालित करना चाहता हूं और शुरुआत में digraph { और अंत में } अपनी स्क्रिप्ट के साथ जोड़ना चाहता हूं जो ग्राफ बनाता है।

1
user12581183 14 फरवरी 2020, 19:21

4 जवाब

आप एक सूची {…} का उपयोग करके अपने आदेश निष्पादित कर सकते हैं:

{ echo 'digraph {'; cat data.txt; echo '}'; } | dot -Tpng > image.png
2
Freddy 14 फरवरी 2020, 19:29

sed का उपयोग करना:

printf 'digraph {\n}\n' | sed '1r data.txt' | dot -Tpng > image.png

अपनी फ़ाइलों की सामग्री के चारों ओर पाठ जोड़ने के बजाय, आप अपनी फ़ाइलों की सामग्री को आवरण में इंजेक्ट करते हैं।

1
chepner 14 फरवरी 2020, 19:54

आप अपने डेटा को गूंजने के लिए फीड कर सकते हैं, data.text को ``s के माध्यम से लोड कर सकते हैं। एक आधुनिक शेल में आप $() निर्माण का भी उपयोग कर सकते हैं।

एक प्रतिध्वनि प्रक्रिया, एक बिल्ली प्रक्रिया, एक बिंदु प्रक्रिया:

echo digraph {`cat data.text`} | dot -Tpng > image.png
0
Bret Weinraub 14 फरवरी 2020, 20:02

अवेक का प्रयास करें।

awk 'BEGIN { print "digraph (" }
    1
    END { print ")" }' data.txt |
dot -Tpng > image.png

1 { print } के लिए एक साधारण Awk शॉर्टहैंड है। cat सख्ती से जरूरी नहीं था,

0
tripleee 14 फरवरी 2020, 19:26