Yalnızca bash'ta boşluk olmayan onaltılık karakterleri içeren onaltılık bir dosya dökümü nasıl oluşturulur?


188

Bash kullanarak Linux'ta ikili bir dosyanın değiştirilmemiş onaltılık dökümünü nasıl oluştururum ? odVe hexdumpkomutlar çöplükte hem ekleme boşluğu ve bu ideal değildir.

Çıktıdaki tüm onaltılı karakterleri, eksi boşlukları veya satırları içeren uzun bir dize yazmanın bir yolu var mı?


Yanıtlar:


250

xxd -p file

Veya hepsini tek bir satırda istiyorsanız:

xxd -p file | tr -d '\n'


13
fyi Süreci tersine çevirmek için: xxd -r -ps hexascii.txt dosyası (satırsonu olsun veya olmasın tamam)
Curtis Yallop

92

Biçim dizeleri, hexdump'ın tam istediğiniz gibi davranmasını sağlayabilir (hiç boşluk yok, bayt bayt):

hexdump -ve '1/1 "%.2x"'

1/1"her biçim bir kez uygulanır ve bir bayt alır" anlamına gelir ve "%.2x"printf gibi gerçek biçim dizesidir. Bu durumda: 2 karakterli onaltılık sayı, daha kısasa sıfırlar.


7
Bir -vveya daha fazla bayt düşecek ve bunları bir yıldız işareti ile değiştireceksiniz.
sonraki duyuruya kadar duraklatıldı.

2
Ben hexdump kendisi çıkış sonuna satırsonu (sadece) eklemek mümkün olup olmadığını merak ediyorum. (Bariz eki ; echobash takma olarak kullanmak imkansız hale getirir)
mykhal

2
Takma alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
adım

Yineleme sayısı ve bayt sayısı varsayılan olarak birdir, bu nedenle 1/1 atlanabilir,hexdump -ve '"%.2x"'
Alex Che

@ mykhal, çıktıdaki bayt sayısını biliyorsanız mümkündür. Sadece 13 baytlık çıktı almak için hexdump kullanıyorsanız:hexdump -n 13 -e '13/1 "%.2x" "\n"'
Alex Che


10

Perl tek katmanlı:

perl -e 'local $/; print unpack "H*", <>' file

Doğrulanmış. "Xxd -p dosyası | tr -d '\ n'" ile eşleşir.
Curtis Yallop

1
fyi Süreci tersine çevirmek için: perl -e 'local $ /; baskı paketi "H *", <> '<hexascii.txt> dosyası
Curtis Yallop

"Yerel $ /" gerekli değildir.
Curtis Yallop

Son yoruma güncelleme: "yerel $ /", "paket" için gerekli değildir. Paketi açmak için buna ihtiyacınız vardır ancak alternatif olarak "undef $ /" koyabilirsiniz. $ /, satır ayırıcıdır (varsayılan NL). undefined onu slurp moduna geçirir. Yani bir dizge bağlamında başvurulan <> tüm ikili dosyayı satırlara ayrıştırmadan çeker.
Curtis Yallop

Alternatif form: perl -e 'print unpack "H *", katılmak ("", <>)' <file
Curtis Yallop

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.