Sürümünüzün sed
ikili-temiz olup olmayacağını veya girdisinde gerçekten uzun satırlar olduğunu düşündüğü şeyleri boğacak mı bilmiyorum, ancak bu sorunları kısıtlamak, yerinde dizeyi düzenlemek işe yaramalıdır. Çalışıp çalışmadığını görmek için eski ve yeni sürümleri karşılaştırın cmp -l
. İki dosya arasındaki sadece üç farkın bu 3 bayt olup olmadığını belirtmelidir.
Dizeleri aynı uzunlukta ise, derlenmiş bir yürütülebilir dosyada dizeleri düzenlemek gerçekten işe yarayacaktır, ancak dizelerin C'de çalışma şekli nedeniyle dizeyi kısaltıyorsanız neredeyse her zaman işe yarayacaktır. C dizelerinde NUL
sonlandırıcıdan sonraki her şey sayılmaz, bu yüzden NUL
eskisinin konumundan önce yeni bir sonlandırıcı yazarsanız, dizeyi etkili bir şekilde kısaltırsınız.
Genel olarak, bu kesmek kullanarak bir dizeyi uzatmanın bir yolu yoktur.
sed -i 's@longstring@foo@' a.out
? Bu tüm ikiliyi 7 bayt daha küçük yapacaktır, bu ikiliyi bozmaz mı?