परिवर्तनीय XFILEBASE64 में बेस 64 एन्कोडेड सामग्री है और मैं उस बेस 64 सामग्री के साथ कुछ स्ट्रिंग को प्रतिस्थापित करना चाहता हूं।बेस 64 पारिस्थितिक सामग्री को कैसे से पास किया जाए?
निश्चित रूप से पर्याप्त बेस 64 विशेष वर्णों के साथ पैक किया गया है, और मैंने $ 0000 'को delimiter के रूप में आजमाया है, फिर भी त्रुटि संदेश प्राप्त कर रहा है। कोई सुझाव?
XFILEBASE64=`cat ./sample.xml | base64`
cat ./template.xml | sed "s$'\001'<Doc>###%DOCDATA%###<\/Doc>$'\001'<Doc>${XFILEBASE64}<\/Doc>$'\001'g"
> sed: -e expression #1, char 256: unterminated `s' command
संपादित करें: ऐसा लगता है कि समस्या एसईडी के साथ कोई संबंध नहीं है की तरह, यह बेस 64 आपरेशनों में छिपा हुआ होना चाहिए।
sample.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>testsdfasdfasdfasfasdfdasfdads</a>
समस्या को पुन: करने के लिए:
foo=`base64 ./sample.xml`
echo $foo | base64 --decode
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<base64: invalid input
कौन सा ओएस और अंततः LANG? यूनिक्स ओएस और LANG मान के आधार पर अलग-अलग इलाज कर रहे हैं और sed पूरी तरह से पाठ है (ASCII अगर मुझे अच्छी तरह याद है) तो उन कारकों को ईओएल के रूप में व्याख्या किया जाना चाहिए। इसके अलावा हर sed हेक्सा एन्कोडिंग की अनुमति नहीं देता है (ऑक्टल अधिक उपलब्ध लगता है) – NeronLeVelu
ओएस आरएचईएल 7.1 और LANG en_US.UTF-8 है, मुझे नहीं लगता कि हेक्स एक समस्या है यदि मैं हेक्सा डिलीमीटर छोड़ देता हूं और स्थिर स्ट्रिंग के साथ परिवर्तनीय सामग्री को प्रतिस्थापित करता हूं तो यह ठीक है। – user52028778
सही, जवाब देकर मैं अधिक स्पष्ट रूप से समझता हूं कि यह विशेष चार अंदर परिवर्तनीय या टेम्पलेट फ़ाइल की समस्या नहीं है, और आप केवल हेक्स को विभाजक के रूप में शामिल करते हैं – NeronLeVelu