Bir ikili dosyadan parçaları kaldırmak için komut satırı çözümü?


0

Ben bir ikili dosya var ve parçaları kaldırmak istiyorum. Çıkarmakla, bu parçaları silmeyi ve böylece dosyanın boyutunu küçültmeyi kastediyorum.

Parçalar iki ASCII dizgisi arasında olacaktı. Yani, örneğin dosya böyle görünür

........ start ABCD end ..... start EFGH end ..... start IJKL end ...........

Yani bu dosyada "start" ve "end" dizgilerini aramak ve aralarındaki parçaları kaldırmak istiyorum.

Yapabileceğimi düşündüğüm yol

  1. "start" ve "end" için tüm yerleri arayın
  2. bundan aralıkları hesapla
  3. bu parçaları sil

Şimdi bazı GUI tabanlı Hex editörü kullanıyorum ve "Tümünü Ara", "Aralık Seç" ve "Sil" komutlarını kullanıyorum, ancak bazı güçlü komut satırı hex / text editörlerini kullanarak çözmenin mümkün olacağından eminim.

Bu sorun için aramaya bakmak, panoya kopyalamak ve yapıştırmak, aralık seçmek ve komutları silmek için bir GUI kullanılmasını gerektirmeyen herhangi bir çözüm biliyor musunuz ?

Hem Linux kabuk betikleri hem de Windows altında bazı komut satırı hex editörleri kullanmakla ilgileniyorum, hatta Python betikleri bile bekliyoruz.

Bu sorunu sadece basit bir Regex yerine koymanın mümkün olduğunu düşünüyor musunuz? İkili dosyaları iyi idare eden herhangi bir regex alternatifi var mı?


GNU grep'in -ametin olarak işlem yapma seçeneği vardır ve bence vimonaltılık editör olarak yeterli olabilir.
new123456

Yanıtlar:


0

Bu perl için bir iş gibi geliyor:

perl -pe 's/start.*?end//g' < inputfile.bin > outputfile.bin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.