मुझे नहीं पता कि क्या आपका संस्करण sed
बाइनरी-क्लीन होगा या अगर यह सोचता है कि इसके इनपुट में वास्तव में लंबी लाइनें हैं, लेकिन उन मुद्दों पर रोक लगाएगा, तो स्ट्रिंग को इन-एडिट करके काम करना चाहिए। यह देखने के लिए कि क्या यह करता है, पुराने और नए संस्करणों की तुलना करें cmp -l
। यह आपको बताना चाहिए कि दो फाइलों के बीच केवल तीन अंतर उन 3 बाइट्स हैं या नहीं।
संकलित निष्पादन योग्य में तारों को संपादित करना वास्तव में काम करेगा यदि तार एक ही लंबाई के हैं, लेकिन यह लगभग हमेशा भी काम करेगा यदि आप स्ट्रिंग को छोटा कर रहे हैं, जिस तरह से स्ट्रिंग सी में काम करते हैं, तो NUL
टर्मिनेटर के बाद सब कुछ। गिनती नहीं है, इसलिए यदि आप NUL
पुराने की स्थिति से पहले एक नया टर्मिनेटर लिखते हैं, तो आप प्रभावी रूप से स्ट्रिंग को छोटा कर देंगे।
सामान्य तौर पर, कोई तरीका नहीं है जिससे आप इस हैक का उपयोग करके एक स्ट्रिंग को लंबा कर सकते हैं।
sed -i 's@longstring@foo@' a.out
? यह पूरे बाइनरी को 7 बाइट्स से छोटा कर देगा, क्या यह बाइनरी को भ्रष्ट नहीं करेगा?